Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<sstream>
- #include<string>
- using namespace std;
- #define MAX 100
- #define MAXVALUE 200
- unsigned char can[MAX*MAXVALUE];
- signed m[MAX];
- unsigned n;
- unsigned last[MAX*MAXVALUE];
- void solve(void)
- {
- unsigned long p;
- unsigned long curSum = 0;
- unsigned i, j;
- for (p = i = 0; i < n; p += m[i++]);
- for (last[0] = 0, i = 1; i <= p; i++)
- last[i] = -1;
- for (i = 0; i < n; i++) {
- for (j = p; j + 1 > 0; j--)
- if (-1 != last[j] && -1 == last[j + m[i]])
- last[j + m[i]] = i;
- curSum += m[i];
- }
- for (i = p / 2; i > 1; i--) {
- if (-1 != last[i]) {
- if(i<p-i)
- cout << i << " " << p - i << endl;
- else {
- cout << p-i << " " << i << endl;
- }
- return;
- }
- }
- }
- int main(void)
- {
- for (size_t i = 0; i < 25; i++)
- {
- string line;
- int k;
- while (getline(cin, line))
- {
- int jm=0;
- istringstream is(line);
- while (is >> k) {
- m[jm] = k;
- jm++;
- }
- n = jm;
- solve();
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement