Advertisement
wintest

Киров 7а

Jan 3rd, 2018
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.00 KB | None | 0 0
  1. #include<iostream>
  2. #include<sstream>
  3. #include<string>
  4.  
  5. using namespace std;
  6.  
  7. #define MAX 100
  8. #define MAXVALUE 200
  9.  
  10. unsigned char can[MAX*MAXVALUE];
  11. signed m[MAX];
  12. unsigned n;
  13. unsigned last[MAX*MAXVALUE];
  14.  
  15. void solve(void)
  16. {
  17.     unsigned long p;
  18.     unsigned long curSum = 0;
  19.         unsigned i, j;
  20.  
  21.     for (p = i = 0; i < n; p += m[i++]);
  22.  
  23.     for (last[0] = 0, i = 1; i <= p; i++)
  24.         last[i] = -1;
  25.     for (i = 0; i < n; i++) {
  26.         for (j = p; j + 1 > 0; j--)
  27.             if (-1 != last[j] && -1 == last[j + m[i]])
  28.                 last[j + m[i]] = i;
  29.         curSum += m[i];
  30.     }
  31.     for (i = p / 2; i > 1; i--) {
  32.         if (-1 != last[i]) {
  33.             if(i<p-i)
  34.             cout << i << " " << p - i << endl;
  35.             else {
  36.                 cout << p-i << " " << i << endl;
  37.             }
  38.             return;
  39.         }
  40.     }
  41. }
  42. int main(void)
  43. {
  44.     for (size_t i = 0; i < 25; i++)
  45.     {
  46.         string line;
  47.         int k;
  48.        
  49.  
  50.         while (getline(cin, line))
  51.         {
  52.             int jm=0;
  53.             istringstream is(line);
  54.             while (is >> k) {
  55.                 m[jm] = k;
  56.                 jm++;
  57.             }
  58.             n = jm;
  59.             solve();
  60.         }
  61.        
  62.     }
  63.    
  64.     return 0;
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement