Monday, August 31, 2015

UVa 10664 - Luggage

// UVa 10664 - Luggage

#include <iostream>
#include <sstream>
#include <string>
using namespace std;

int main(void) {
	string line;

	int t;
	cin >> t;

	getline(cin, line);

	int a[20];
	int i;
	bool T[201];
	for (; t > 0; t--) {
		getline(cin, line);

		stringstream ss(line);

		int n = 0;
		while (ss.good()) {
			ss >> a[n++];
		}

		int sum = 0;
		for (int i = 0; i < n; i++)
			sum += a[i];

		if (sum % 2 == 1)
			cout << "NO" << endl;
		else {
			sum = sum / 2;

			T[0] = true;
			for (int j = 1; j <= sum; j++)
				T[j] = false;
			for (int i = 0; i < n; i++) {
				for (int j = sum; j >= a[i]; j--)
					if (T[j - a[i]]) {
						T[j] = true;
					}
			}

			if (T[sum])
				cout << "YES" << endl;
			else
				cout << "NO" << endl;
		}

	}

	return 0;
}

No comments:

Post a Comment