Cod sursa(job #1710016)

Utilizator UBB2NibblesFromHellAlexandru Duma UBB2NibblesFromHell Data 28 mai 2016 14:47:14
Problema Sate2 Scor 0
Compilator cpp Status done
Runda ONIS 2016 - Runda - 2 - ACM ICPC Romanian Programming Contest Marime 1.11 kb
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;

int main() {
	ifstream f{ "sate2.in" };
	ofstream g{ "sate2.out" };

	int t, n, m, k;
	f >> t;
	while (t--) {
		int tmp;
		f >> n >> m >> k;
		vector<int> nums;
		while (n--) {
			f >> tmp;
			nums.push_back(tmp);
		}

		if (m%k != 0) {
			g << "NU" << endl;
			continue;
		}

		sort(nums.begin(), nums.end(), [](const int a, const int b) {
			return a > b;
		});

		int req = m / k;

		auto fit = nums.begin();
		bool isDA = true;

		while (fit != nums.end()) {
			int num = *fit;
			int sum = *fit;
			nums.erase(fit);
			if (sum == req) {
				fit = nums.begin();
				continue;
			}
			auto nit = nums.begin();
			while(nit != nums.end()) {
				if (num + *nit <= req) {
					sum += *nit;
					nums.erase(nit);
					if (sum == req)
						break;
					nit = nums.begin();
				}
				nit = nit + 1;
			}

			if (sum != req) {
				g << "NU" << endl;
				isDA = false;
				break;
			}

			fit = nums.begin();
			
		}

		if(isDA)
			g << "DA" << endl;

	}

	f.close();
	g.close();
	return 0;
}