hdu2515

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<algorithm>
 4 using namespace std;
 5 int hash[100005],k[100005],a[100005];
 6 int main()
 7 {
 8     int n,sum,i,j,x,sum1,t;
 9     while (~scanf("%d",&n))
10     {
11         memset(hash,0,sizeof(hash));
12         sum=n*(n-1)/2;
13         for (i=1;i<=sum;i++)
14         {
15             scanf("%d",&k[i]);
16             hash[k[i]]++;
17         }
18         sort(k+1,k+sum+1);
19         for (x=3;x<=n+1;x++)
20         {
21             sum1=k[1]+k[2]+k[x];
22             if (sum1%2!=0) continue;
23             a[1]=sum1/2-k[x];
24             a[2]=sum1/2-k[2];
25             a[3]=sum1/2-k[1];
26   //          if (a[1]<=0||a[2]<=0||a[3]<=0) continue;
27             hash[k[1]]--; hash[k[2]]--; hash[k[x]]--;
28             t=3;
29             for (i=3;i<=sum;i++)
30              if (hash[k[i]]!=0)
31              {
32                  t++;
33                  a[t]=k[i]-a[1];
34                  for (j=1;j<t;j++) hash[a[j]+a[t]]--;
35              }
36             for (i=1;i<=n;i++) printf("%d\n",a[i]);
37             break;
38         }
39     }
40 }

http://acm.hdu.edu.cn/showproblem.php?pid=2515

posted on 2014-07-16 14:44  xiao_xin  阅读(123)  评论(0)    收藏  举报

导航