#include<stdcpp.h>
using namespace std;

class Solution{
public:
    int candy(vector<int>& ratings){
        const int length = ratings.size();
        const int size = 2e4+10;
        vector<int>pref(length, 1);
        vector<int>suff(length, 1);
        for(int i = 1 ; i < length ;i++){
            if(ratings[i] > ratings[i-1])
                pref[i] = pref[i-1] + 1;
        }
        for(int i = length - 2 ; i >= 0 ; i--){
            if(ratings[i] > ratings[i+1])
                suff[i] = suff[i+1] + 1;
        }
        int sum = 0;
        for(int i = 0 ; i < length ;i++)
        sum+=max(pref[i],suff[i]);
        return sum;
    }
    int candy1(vector<int>& ratings){
        const int length = ratings.size();
        const int size = 2e4+10;
        int comparision[size] = {};
        if(ratings[1] > ratings[0])
            comparision[0] = 1;
        else if (ratings[1] == ratings[0])
            comparision[0] = 0;
        else
            comparision[0] = -1;
        int rlt[size] = {};
        for(int i = 1 ; i < length ; i++){
            if(ratings[i] < ratings[i-1]){
                comparision[i] = -1;
                if(rlt[i-1] == 0) {
                    rlt[i] = 2;
                    // rlt[i-1] = 1;
                }
                else    rlt[i] = rlt[i-1] + 1;
            }
            else if(ratings[i] == ratings[i - 1]){
                comparision[i] = 0;
            }
            else{
                comparision[i] = 1;
            }
        }
        for(int i = 1 ; i < length ; i++){
            if(rlt[i] == 0){
                if(comparision[i] == 0)
                    rlt[i] = 1;
                else {
                    // if(comparision[i-1] == -1)
                    //     rlt[i] = 2;
                    // else
                    //     rlt[i] = rlt[i-1] + 1;
                    if(comparision[i-1] == 1 && rlt[i-1] == 0)
                        rlt[i] = 2;
                    else if(comparision[i-1] == 1 && rlt[i-1])
                        rlt[i] = rlt[i-1] + 1;
                }
            }
        }
        for(int i = 0 ; i <length;i++)
            if(!rlt[i]) rlt[i] = 1;
        int sum = 0;
        for(int i = 1; i < length ; i++){
            sum += rlt[i];
            cout<<rlt[i]<<' ';
        }
        cout<<endl;
        sum+=1;
        return sum;
    }
};
int main(){
    Solution sol;
    vector<int> ex1 = {1,0,2};
    cout<<sol.candy(ex1)<<endl;
    vector<int> ex2 = {1,2,2};
    cout<<sol.candy(ex2)<<endl;
    vector<int> ex3 = {4,1,4,3,2,1,5,8,7,5,2};
    cout<<sol.candy(ex3)<<endl;
    vector<int> ex4 = {1,3,4,5,2};
    cout<<sol.candy(ex4)<<endl;
    return 0;
}