盒子
Description
小D在玩堆盒子的游戏,每个盒子有一个强度,代表它上方最多能堆多少个
盒子。由于盒子都是一样大的,所以不能在一个盒了上并列放超过一个盒子。
现在小D有n个盒子,第i个盒子的强度为xi。
小D想知道,如果他要把这些盒子全部堆起来,至少要堆多少堆。
Input
第一行读入一个整数n,代表小D有的盒子个数。
第二行读入n个整数,第i个整数xi表示第i个盒了的强度。
Output
共一行,一个整数表示小D至少要堆多少堆。
Sample Input
5
0 2 1 1 2
Sample Output
2
Hink
对于20%的数据,n≤10;
对于50%的数据,n≤1000;
对于100%的数据,n≤500000,xi≤1000000000。
解题思路
先把盒子的强度从小到大排序,盒子的状态全部改为1(表示没有加进去 ),然后用一个计数器,计数器先清零。然后从第一个开始,如果盒子的强度大于计数器,计数器加1,盒子的状态清零(表示已经加进去了)。所有数全部过一遍,过完一次总数加1,计数器清零,知道盒子的状态全部为零结束。
#include<iostream>
#include<iomanip>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<cstdio>
using namespace std;
const</