Problem Statement
You are given N sticks, where the length of each stick is a positive integer. Acut 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 cut in subsequent cut operations.
Note: For each cut operation, you have to recalcuate the length of smallest sticks (excluding zero-length sticks).
Input Format
The first line contains a single integerN .
The next line containsN integers: a0, a1,...aN-1 separated by space, where airepresents the length of ith stick.
The first line contains a single integer
The next line contains
Output Format
For each operation, print the number of sticks that are cut in separate line.
For each operation, print the number of sticks that are cut in separate line.
Constraints
1 ≤ N ≤ 1000
1 ≤ ai ≤ 1000
1 ≤ N ≤ 1000
1 ≤ ai ≤ 1000
Sample Input #00
6
5 4 4 2 2 8
Sample Output #00
6
4
2
1
Sample Input #01
8
1 2 3 4 3 3 2 1
Sample Output #01
8
6
4
1
Explanation
Sample Case #00 :
sticks-length length-of-cut sticks-cut
5 4 4 2 2 8 2 6
3 2 2 _ _ 6 2 4
1 _ _ _ _ 4 1 2
_ _ _ _ _ 3 3 1
_ _ _ _ _ _ DONE DONE
Sample Case #01
sticks-length length-of-cut sticks-cut
1 2 3 4 3 3 2 1 1 8
_ 1 2 3 2 2 1 _ 1 6
_ _ 1 2 1 1 _ _ 1 4
_ _ _ 1 _ _ _ _ 1 1
_ _ _ _ _ _ _ _ DONE DONE
My code for the following program is :
#include <algorithm>
#include <iostream>
#include <climits>
using namespace std;
int main()
{
int n,i,j,k,min= INT_MAX,max,st,en,arr[10000],flag ;
cin>>n;
for(i=0;i<n;i++){
cin>>arr[i];
if( min>arr[i])
{
min = arr[i];
}
}
do{
int count= 0,nmin=INT_MAX;
flag =0;
for(i=0;i<n;i++)
{
if(arr[i]>0){
arr[i] = arr[i] - min;
count++;
}
if(arr[i]>0 )
{
flag =1;
if(nmin>arr[i])
nmin = arr[i];
}
}
min = nmin;
cout<<count<<endl;
}while(flag>0);
return 0;
}
No comments:
Post a Comment