## Question

There are N children standing in a line. Each child is assigned a rating value.

You are giving candies to these children subjected to the following requirements:

- Each child must have at least one candy.
- Children with a higher rating get more candies than their neighbors.
What is the minimum candies you must give?

## Solution

**Result:** Accepted **Time:** 40 ms

Here should be some explanations.

```
class Solution {
public:
int candy(vector<int>& ratings) {
if(!ratings.size())
return 0;
vector<int> candy(ratings.size(),1);
for(int i=1;i<candy.size();i++)
if(ratings[i]>ratings[i-1]&&candy[i]<=candy[i-1])
candy[i]=candy[i-1]+1;
for(int i=candy.size()-2;i>=0;i--)
if(ratings[i]>ratings[i+1]&& candy[i]<=candy[i+1])
candy[i]=candy[i+1]+1;
return accumulate(begin(candy), end(candy), 0);
}
};
```

**Complexity Analytics**

- Time Complexity:
- Space Complexity: