Hide

Problem M
Slide Count

In your programming class, you are given an assignment to analyze an integer array using a sliding window algorithm. Specifically, given N integers w1,,wN and some constant C, the sliding window algorithm maintains start and end indices s and e such that

  • initially s=e=1;

  • as long as sN:

    • if e+1>N, then increment s;

    • else if ws++we+1>C, then increment s;

    • else increment e.

During the execution of this algorithm, each distinct pair of indices (s,e) defines a window. An element wi belongs to the window defined by (s,e) if sie. Notice that if s>e, the window is empty.

Consider the first sample input below. The windows appearing during the execution of the algorithm are defined by (1,1), (1,2), (1,3), (2,3), (3,3), (3,4), (4,4), (5,4), (5,5), and (6,5).

For each element wi, determine how many different windows it belongs to during the execution of the sliding window algorithm.

Input

The first line of input contains two integers N (1N100000), which is the number of elements, and C (1C1000000), which is the sliding window constant.

The next line contains N integers w1,,wN (0wiC).

Output

For each element, in order, display the number of different windows it belongs to during the execution of the algorithm.

Sample Input 1 Sample Output 1
5 3
1 1 1 2 2
3
3
4
2
1 
Sample Input 2 Sample Output 2
5 10
1 2 3 4 5
4
4
4
5
2 
Hide

Please log in to submit a solution to this problem

Log in