Submission
Status:
PPPPPP--P-
Score: 70
User: Pera
Problemset: Fool's Compensation
Language: cpp
Time: 0.002 second
Submitted On: 2025-03-24 00:23:29
#include <bits/stdc++.h>
using namespace std;
int calrank(vector<int>& salaries, int size) {
vector<int> rank(size, 1);
// edge cases, only one worker
if (size == 1) return 1;
int n = 1;
while (n < size) {
if (salaries[n] > salaries[n - 1]) {
rank[n] = rank[n - 1] + 1;
} else if (salaries[n] == salaries[n-1]) {
rank[n] = rank[n-1];
}
n++;
}
n = size - 2;
while (n >= 0) {
if (salaries[n] > salaries[n + 1] && rank[n] <= rank[n + 1]) {
rank[n] = rank[n + 1] + 1;
} else if (salaries[n] == salaries[n + 1]) {
rank[n] = rank[n + 1];
}
n--;
}
int sum{0};
for (int i = 0; i < size; i++) {
sum += rank[i];
}
return sum;
}
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL);
int n; cin >> n;
vector<int> salaries(n);
for (int i = 0; i < n; i++) {
cin >> salaries[i];
}
cout << calrank(salaries, n) * 1000 << '\n';
}