Author: Rupanjan Hari
Tester: Rupanjan Hari
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.
Arrays: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
Functions: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