fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. template<typename T>
  4. T getNum()
  5. {
  6. T res=0;
  7. char c;
  8. while(1)
  9. {
  10. c=getchar_unlocked();
  11. if(c==' '||c=='\n')
  12. continue;
  13. else
  14. break;
  15. }
  16. res=c-'0';
  17. while(1)
  18. {
  19. c=getchar_unlocked();
  20. if(c>='0'&&c<='9')
  21. res=10*res+c-'0';
  22. else
  23. break;
  24. }
  25. return res;
  26. }
  27. int main()
  28. {
  29. int n;
  30. scanf("%d",&n);
  31. for(int a=1;a<=n;a++)
  32. {
  33. int banyak;
  34. banyak=getNum<int>();
  35. int arr[banyak+3];
  36. vector <pair<int,int> > y;
  37. int sum=0;
  38. for(int b=1;b<=banyak;b++)
  39. {
  40. arr[b]=getNum<int>();
  41. sum=sum+arr[b];
  42. }
  43. sort(arr+1,arr+banyak+1);
  44. int batas=sum/2;
  45. int jarak=-1;
  46. for(int b=1;b<=banyak;b++)
  47. {
  48. if(arr[b]<=batas)
  49. y.push_back(make_pair(b,arr[b]));
  50. }
  51. for(int b=0;b<y.size();b++)
  52. {
  53. jarak=max(jarak,y[b].second);
  54. if(y[b].second==batas)
  55. {
  56. jarak=max(jarak,y[b].second);
  57. break;
  58. }
  59. else
  60. {
  61. for(int c=y[b].first%10+1;c<=banyak;c++)
  62. {
  63. int temp=y[b].first*10;
  64. temp=temp+c;
  65. if(y[b].second+arr[c]<=batas)
  66. y.push_back(make_pair(temp,y[b].second+arr[c]));
  67. }
  68. }
  69. }
  70. printf("%d\n",sum-(jarak*2));
  71. }
  72. }
Success #stdin #stdout 0s 4392KB
stdin
1
5
1
2
3
4
5
stdout
1