// you can also use includes, for example:
// #include <algorithm>
vector<int> solution(int N, vector<int> &A) {
// write your code in C++98
//...keep record of minValue across the whole array to reach O(n+m) time complexity
vector<int> result(N, 0);
int minValue = 0;
int maxValue = 0;
for(int i = 0; i < A.size(); ++i)
{
int index = A[i]-1;
if(index == result.size()) minValue = maxValue;
else
{
if(result[index] < minValue) result[index] = minValue+1;
else result[index]++;
maxValue = max(maxValue, result[index]);
}
}
//...at last take care of the reamin less than minValue element
for(int i = 0; i < result.size(); ++i)
if(result[i] < minValue) result[i] = minValue;
//...return the result
return result;
}