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