**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

asked
**12 Oct '16, 22:18**

0★hrupanjan

4●1

accept rate:
0%