Think:
桶排序???。。。开一个0—100的数组计入各年龄段的人数,输出时判断是否为零即可。。。
What ?? 用cin cout 又一次TLE。。。。
Problem Description
根据人口普查结果,知道目前淄博市大约500万人口,你的任务是帮助人口普查办公室按年龄递增的顺序输出每个年龄有多少人,其中不满1周岁的按0岁计算,1到2周岁的按1岁计算,依次类推,大于等于100岁的老人全部按100岁计算。
Input
输入第一行给出一个正整数N(<=5000000),随后连续给出N个整数表示每个人的年龄,数字间以空格分隔。
Output
按年龄递增的顺序输出每个年龄的人口数,人口数为0的不输出,每个年龄占一行,数字间以一个空格分隔,行末不得有多余空格或空行。
Example Input
10
16 71 17 16 18 18 19 18 19 20
Example Output
16 2
17 1
18 3
19 2
20 1
71 1
#include<stdio.h>
int main()
{
int bucket[200] = {0};
int T, old;
scanf("%d",&T);
int i;
for (i = 0;i <= T - 1;i ++)
{
scanf("%d",&old);
if (old >= 100)
bucket[100] ++;
else
bucket[old] ++;
}
for (i = 0;i < 101;i ++)
{
if (bucket[i] != 0)
printf("%d %d\n",i,bucket[i]);
}
return 0;
}
/***************************************************
User name:
Result: Accepted
Take time: 152ms
Take Memory: 104KB
Submit time: 2017-02-22 15:17:33
****************************************************/
附上一份TLE的代码TAT
下面是TLE的!!!!!!!!
#include<bits/stdc++.h>
using namespace std;
int main()
{
int bucket[126];
memset(bucket, 0, sizeof(bucket));
int T, old;
cin >> T;
int i;
for (i = 0;i <= T - 1;i ++)
{
cin >> old;
if (old >= 100)
bucket[100] ++;
else
bucket[old] ++;
}
for (i = 0;i <= 100;i ++)
{
if (bucket[i] != 0)
cout << i << " " << bucket[i] << endl;
}
return 0;
}
/***************************************************
User name:
Result: Time Limit Exceeded
Take time: 160ms
Take Memory: 0KB
Submit time: 2017-02-22 15:12:20
****************************************************/