Submission

Status:

PPPPPPPPPP

Subtask/Task Score:

100/100

Score: 100

User: C12

Problemset: Fool's Compensation

Language: cpp

Time: 0.003 second

Submitted On: 2026-03-11 01:42:44

#include <bits/stdc++.h>

using namespace std;

const int mod = 1e9+7;

int vec[10001];
int cost[10001];
int mul[10001];
int n;
int recursive(int i){
    if(cost[i] > 0) return cost[i];
    int mx = 0;
    if(i < n-1){
        int j = 0;
        if(vec[i] > vec[i+1])
            mx = max(mx,recursive(i+1));
    }
    if(i > 1){    
        if(vec[i] > vec[i-1])
            mx = max(mx,recursive(i-1));
    }
    cost[i] = mx + 1;
    return cost[i];
}

int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);

    int m;
    cin >> m;

    cin >> vec[0];
    mul[0] = 1;
    n = 1;
    int t;

    for(int i = 1;i < m;i++){
        cin >> t;
        // cerr << i << ' ' << m << ' ' << t << '\n';

        if(t == vec[n-1]) {
            mul[n-1]++;
            continue;
        }
        vec[n] = t;
        mul[n] = 1;
        n++;
    }

    // return 0;

    // cout << '\n';

    for(int i = 0;i < n;i++){
        if(cost[i] == 0){
            recursive(i);
        }
    }
    long long sum = 0;
    for(int i = 0;i < n;i++){
        // cout << cost[i] << ' ' << mul[i] << '\n';
        sum += (cost[i]*mul[i]);
    }
    sum *= 1000;
    cout << sum;
}