数据结构实验之排序三:bucket sort

Time Limit: 250 ms Memory Limit: 65536 KiB

Submit Statistic

Problem De ion

根据人口普查结果,知道目前淄博市大约500万人口,你的任务是帮助人口普查办公室按年龄递增的顺序输出每个年龄有多少人,其中不满1周岁的按0岁计算,1到2周岁的按1岁计算,依次类推,大于等于100岁的老人全部按100岁计算。

Input

 输入第一行给出一个正整数N(<=5000000),随后连续给出N个整数表示每个人的年龄,数字间以空格分隔。

Output

 按年龄递增的顺序输出每个年龄的人口数,人口数为0的不输出,每个年龄占一行,数字间以一个空格分隔,行末不得有多余空格或空行。

 

Sample Input

10
16 71 17 16 18 18 19 18 19 20

Sample Output

16 2
17 1
18 3
19 2
20 1
71 1

Hint

Source

xam

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int a[5000001];
int main()
{
    int n, i, x;
    scanf(\"%d\", &n);
    memset(a,0,sizeof(a));
    for(i = 1; i <= n; i++)
    {
        scanf(\"%d\", &x);
        if(x > 100)
        {
            a[100]++;
        }
        else
        {
            a[x]++;
        }
    }
    for(i = 0; i < 110; i++)
    {
        if(a[i] != 0)
        {
            printf(\"%d %d\\n\", i, a[i]);
        }
    }
    return 0;
}

 

收藏 打印