less than 1 minute read

<-H 135> Candy

class Solution {
public:
    int candy(vector<int>& ratings) {
        const int n = ratings.size();
        vector<int> candys(n);

        for(int i = 1, increased_candy = 1; i != n; i++)
            if(ratings[i] > ratings[i - 1])
                candys[i] = max(increased_candy++, candys[i]);
            else
                increased_candy = 1;

        for(int i = n - 2, increased_candy = 1; i >= 0; i--)
            if(ratings[i] > ratings[i + 1])
                candys[i] = max(increased_candy++, candys[i]);
            else
                increased_candy = 1;

        return accumulate(&candys[0], &candys[0] + n, n);
    }
};