Author: Rupanjan Hari

Tester: Rupanjan Hari

: Easy

: Math


You are given N sticks, where the length of each stick is a positive integer. A cut operation is performed on the sticks such that all of them are reduced by the length of the smallest stick.
Suppose we have six sticks of the following lengths:
5 4 4 2 2 8
Then, in one cut operation we make a cut of length 2 from each of the six sticks. For the next cut operation four sticks are left (of non-zero length), whose lengths are the following:
3 2 2 6
The above step is repeated until no sticks are left.
Given the length of N sticks, print the number of sticks that are left before each subsequent cut operations.
Note: For each cut operation, you have to recalculate the length of smallest sticks (excluding zero-length sticks).


To make the problem look easy, I have divided the program into functions of appropriate name.


arr[] - Primary array that receives the input size of each stick tag[] - The array that keeps a count on which sticks are being cut, once cut the tag[index] value changes to 1 otherwise 0


void cut(int a[],int n,int tag[]) - Cuts the sticks with the minimum value in the primary array that it receives through a[]. int min(int a[],int n,int tag[]) - Finds the minimum size among all the sticks. void count(int a[],int n) - Counts the no. of sticks cut. int equal(int a[], int n) - Operates the loop until all sticks are cut.

click here to see the solution