HU-2323 SORT AGAIN

1511 ワード

http://acm.hdu.edu.cn/showproblem.php?pid=2523
ハッシュを勉強して、i++に注意してください。後は--iです。
                   SORT AGAIN
Time Limit:2000/1000 MS(Java/Others)    メモリLimit:32768/32768 K(Java/Others)Total Submission(s):3479    Acceepted Submission(s):1107
Problem Description
N個の整数をあげます。x 1、x 2…xn、二つの整数の組み合わせを取ってもいいです。K番目の大きさの組み合わせはどれかを計算してください。
 
Input
入力データは、まず正の整数Cを含み、Cグループのテストケースを表す。各テストデータの最初の行は、2つの整数N,Kを含む。(1<N<=1000,0 
Output
各グループのテストデータに対して、K番目の大きな組み合わせ数を出力してください。出力例は1ラインです。
 
Sample Input
3
3 2
4 0 7
4 2
1 2 3 4
2 1
2 9
 
 
Sample Output
4
2
7
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int main()
{
	int t,n,k,i,a[2000],j,b[2000];
	scanf("%d",&t);
	while(t--)
	{
		scanf("%d%d",&n,&k);
		for(i=0;i<n;i++)
		   scanf("%d",&a[i]);
		memset(b,0,sizeof(b));
		  sort(a,a+n);
		for(i=0;i<n;i++)
			for(j=i+1;j<n;j++)
				b[a[j]-a[i]]=1;
		   i=0;
		   while(k!=0)
		       k-=b[i++];
		printf("%d
",--i);// i++, --i; } return 0; }