hdu1280前m大的数

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1280

简单的hash。。。


代码:


#include <cstdio>
#include <cstring>

int hash[10005];
int sum[10005];
int a[3005];
int n,m;

int main()

{
    while(~scanf("%d%d",&n,&m))
    {
        memset(sum,0,sizeof sum);
        memset(hash,0,sizeof hash);
        for(int i = 0;i < n;++i)
            scanf("%d",&a[i]);
        for(int i = 0;i < n;++i)
        {
            for(int j = i + 1;j < n;++j)
            {
                sum[a[i] + a[j]] ++;
                hash[a[i] + a[j]] = 1;
            }
        }
        int cnt = 1;
        for(int i = 10000;i >= 0 && cnt <= m;--i)
        {
            if(hash[i])
            {
                while(sum[i]-- && cnt <= m)
                {
                    if(cnt == 1)
                        printf("%d",i);
                    else
                        printf(" %d",i);
                    ++cnt;
                }
            }
        }
        printf("\n");
    }
}

你可能感兴趣的:(hash,ACM)