HDU2523:SORT AGAIN

Problem Description

给你N个整数,x1,x2...xn,任取两个整数组合得到|xi-xj|,(0<i,j<=N,i!=j)。 现在请你计算第K大的组合数是哪个(一个组合数为第K大是指有K-1个不同的组合数小于它)。
 
Input
输入数据首先包含一个正整数C,表示包含C组测试用例. 每组测试数据的第一行包含两个整数N,K。(1<N<=1000,0<K<=2000) 接下去一行包含N个整数,代表x1,x2..xn。(0<=xi<=2000)
 
Output
对于每组测试数据,请输出第K大的组合数,每个输出实例占一行。
 
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 <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;


int main()
{
    int data[2005],hash[2005];
    int c,n,t;
    cin>>c;
    while(c--)
    {
        memset(data,0,sizeof(data));
        memset(hash,0,sizeof(hash));
        cin>>n>>t;
        for(int i=1;i<=n;i++)
        cin>>data[i];
        sort(data+1,data+n+1);
        for(int i=1;i<n;i++)
        {
            for(int j=i+1;j<=n;j++)
            {
                hash[data[j]-data[i]]++;
            }
        }
        int z=0;
        for(int i=0;i<=2000;i++)
        {

            if(hash[i])
            {
                z++;
                if(z==t)
                {
                    cout<<i<<endl;
                    break;
                }
            }
        }
    }
    return 0;
}

 

 
posted @ 2016-03-28 18:30  邻家那小孩儿  阅读(107)  评论(0编辑  收藏  举报