Submission

Status:
PPPPPPPPPP

Score: 100

User: Pera

Problemset: Fool's Compensation

Language: cpp

Time: 0.002 second

Submitted On: 2025-03-24 00:30:14

#include <bits/stdc++.h>
using namespace std;

long long calrank(vector<int>& salaries, int size) {
    vector<int> rank(size, 1);

    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--;
    }

    long long 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';
    return 0;
}