**PROBLEM LINK**:

Practice

Author: Rupanjan Hari

Tester: Rupanjan Hari

**DIFFICULTY**

: Easy

**PREREQUISITES**

: Math

**QUICK EXPLANATION**

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).

**EXPLANATION**

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.

**SOLUTION:**

click here to see the solution