fork(1) download
  1. //laptrinhsgu.wordpress.com
  2.  
  3. #include <bits/stdc++.h>
  4.  
  5. using namespace std;
  6. int main()
  7. {
  8. int n,t=0,f[10001],d[10001];
  9. cin>>n;
  10. int a[n+1];
  11. for (int i=1;i<=n;i++)
  12. {
  13. cin>>a[i];
  14. t=t+a[i];
  15. }
  16. t=t/2;
  17. //QHD
  18. for (int i=1;i<=t;i++)
  19. {
  20. f[i]=INT_MAX;
  21. for (int j=1;j<=n;j++)
  22. if (i>=a[j] && j>f[i-a[j]])
  23. {
  24. f[i]=j;
  25. break;
  26. }
  27. }
  28.  
  29. //Truyvet
  30. while (f[t] > n) t--;
  31. while (t > 0)
  32. {
  33. d[f[t]]=1;
  34. t=t-a[f[t]];
  35. }
  36. int sum1 = 0, sum2 = 0;
  37. for (int i=1;i<=n;i++)
  38. if (d[i]==1)
  39. {
  40. cout<<a[i]<<" ";sum1+=a[i];
  41. }
  42. cout<<endl;
  43. for (int i=1;i<=n;i++)
  44. {
  45. if (d[i]!=1)
  46. {
  47. sum2+=a[i];cout<<a[i]<<" ";
  48. }
  49.  
  50. }
  51. cout<<endl<<sum1<<' '<<sum2<<endl;
  52. }
Success #stdin #stdout 0s 5280KB
stdin
5
45 36 21 12 63
stdout
21 63 
45 36 12 
84 93