Problem10959--Codility - MaxCounters

10959: Codility - MaxCounters

[Creator : ]
Time Limit : 1.000 sec  Memory Limit : 512 MiB

Description

Calculate the values of counters after applying all alternating operations: increase counter by $1$; set value of all counters to current maximum.
You are given $N$ counters, initially set to $0$, and you have two possible operations on them:
  • increase(X) − counter $X$ is increased by $1$,
  • max counter − all counters are set to the maximum value of any counter.
A non-empty array $A$ is given. This array represents consecutive operations:
  • if $A[K] = X$, such that $1 ≤ X ≤ N$, then operation $K$ is increase(X),
  • if $A[K] = N + 1$ then operation $K$ is max counter.
For example, given integer $N = 5$ and array $A$ such that:
A[0] = 3 
A[1] = 4 
A[2] = 4 
A[3] = 6 
A[4] = 1 
A[5] = 4 
A[6] = 4
the values of the counters after each consecutive operation will be:
(0, 0, 1, 0, 0) 
(0, 0, 1, 1, 0) 
(0, 0, 1, 2, 0) 
(2, 2, 2, 2, 2) 
(3, 2, 2, 2, 2) 
(3, 2, 2, 3, 2) 
(3, 2, 2, 4, 2)
The goal is to calculate the value of every counter after all operations.

Input

Write an efficient algorithm for the following assumptions:
  • $N$ are integers within the range $[1..100,000]$;
  • each element of array $A$ is an integer within the range $[1..N + 1]$.

Output

returns a sequence of integers representing the values of the counters.

Sample 1 Input

7
3 4 4 6 1 4 4

Sample 1 Output

3 2 2 4 2

HINT

Codility.

Source/Category