HDU-1280前m大の数

2564 ワード

前mの大きい数
Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 3103    Accepted Submission(s): 1096
Problem Description
Gardonが希ちゃんに出した宿題を覚えていますか?(前回の試合の1005)実は希ちゃんは元の時計を取り戻して、今彼女は彼女の答えが正しいかどうかを確認したいと思っていますが、全体の答えは巨大な時計で、希ちゃんはあなたに答えの中で最大のM個の数を彼女に伝えたいだけです.
 
N(N<=3000)個の正の整数を含むシーケンスが与えられ、各数は5000を超えず、それらの2つを加算して得られたN*(N−1)/2個の和に対して、前のMの大きい数(M<=1000)を求め、大きい順から小さい順に並べられる.
 
Input
入力には複数のデータが含まれます.各データには2行が含まれます.
 
第1行の2つの数NとMは、
 
2行目のN個の数は、そのシーケンスを表す.
 
Output
入力されたデータのセットごとに、M個の数が出力され、結果が表示されます.出力は大きい順から小さい順に並べなければならない.
 
Sample Input
 
    
4 4 1 2 3 4 4 5 5 3 6 4
 

Sample Output
 
    
7 6 5 5 11 10 9 9 8
 

  一道简单的Hash题,通过组合生成各种组合数,再通过一个数组来标记是否存在该数。

代码入下:



#include 
#include 
#include 
#include 
#include  
#include 




int hash[10005], ele[3005], add[3005];

int main()
{
    int N, M;
    while( scanf( "%d%d", &N, &M )!= EOF )
    {
        memset( hash, 0, sizeof( hash ) );
        for( int i= 0; i< N; ++i )
            scanf( "%d", &ele[i] );
        for( int i= 0; i< N; ++i )
            for( int j= i+ 1; j