1716: 棒棒糖
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 182 Solved: 73
[Submit][Status][Web Board]
Description
有一天,zhizhang骚年去买棒棒糖,他买了n个棒棒糖,每个棒棒糖都有ai的甜度。现在骚年开始吃每根棒棒糖,如果骚年先吃棒棒糖的甜度小于接下来吃的棒棒糖的甜度,那么他就会汪汪叫一声。所以,你就想调戏他,你就想找出一个顺序使他叫的次数最多。
Input
多组测试数据
第一行输入一个n(1<=n<=1000)
输入n个数ai(1<=ai<=1000)
Output
输出最大叫的次数。
Sample Input
5
20 30 10 50 40
4
200 100 100 200
Sample Output
4
2
HINT
【解析】
挺水的,可惜我还是错了
一开始想着打表模拟,从小到大的找。但是错了,看了同学的代码。从大到小找就可以了。
【代码】
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n, t, ai[1010];
while (~scanf("%d", &n))
{
memset(ai, 0, sizeof(ai));
for (int i = 0; i < n; i++)
{
scanf("%d", &t);
ai[t]++;
}
int ans = 0;
int i = 1000;
while(i>0)
{
while (!ai[i] && i > 0)i--;
ai[i]--;
for (int j = i - 1; j >= 0; j--)
{
if (ai[j])
{
ans++;
ai[j]--;
}
}
}
printf("%d\n", ans);
}
return 0;
}