Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int Solution::candy(vector<int> &A) {
- int n = A.size();
- int ans = 1;
- if(!n) return 0;
- vector<int> inc(n); inc[0] = 0;
- vector<int> curr(n); curr[0] = 1;
- for(int i = 1; i < n; i++){
- if(A[i] >= A[i-1]) inc[i] = 0;
- else inc[i] = inc[i - 1] + 1;
- }
- for(int i = 1; i < n; i++){
- int last = curr[i - 1];
- if(A[i] > A[i - 1]){
- curr[i] = last + 1;
- ans += curr[i];
- } else{
- ans++;
- if(last == 1){
- ans += inc[i];
- if(curr[i - inc[i]] > inc[i]) ans--;
- }
- curr[i] = 1;
- }
- }
- return ans;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement