前m大的数
#include<stdio.h> #include<stdlib.h> #include<string.h> int dp[11000],A[5100]; int main( ) { int N,M,i,j,k,max; while(scanf("%d%d",&N,&M)!=EOF) { k=0;max=0; memset(dp,0,sizeof(dp)); for(i=1;i<=N;i++) scanf("%d",&A[i]); for(i=1;i<N;i++) for(j=i+1;j<=N;j++) { k=A[i]+A[j]; if(k>max) max=k; dp[k]++; } for(j=0,i=max;j<M&&i>=1;i--) if(dp[i]) while(dp[i]&&j<M) { j++; //刚开始没有在这个循环里面加j<m.
//wa了好几次了。。考虑不仔细。 printf(j==1?"%d":" %d",i); dp[i]--; } printf("\n"); } return 0; }
posted on 2011-05-02 15:44 more think, more gains 阅读(262) 评论(0) 编辑 收藏 举报