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