Cod sursa(job #1709604)

Utilizator vand_bot_la_PAUPB Mardale Mocanu Vasilache vand_bot_la_PA Data 28 mai 2016 13:02:51
Problema Sate2 Scor 0
Compilator cpp Status done
Runda ONIS 2016 - Runda - 2 - ACM ICPC Romanian Programming Contest Marime 1.03 kb
#include <stdio.h>
#include <string.h>
#include <algorithm>

using namespace std;


int t, n, m, k;
int v[3005];
int rem[100];
char taken[3005];
int last_i;

int find_decr (int val) {
	//printf("%d\n", val);
	int max_val = -1, max_index;
	for (int i = 1; i <= k; ++i) {
		if ((rem[i] >= val) && rem[i] > max_val) {
			max_val = rem[i];
			max_index = i;
		}
	}

	if (max_val == -1) {
		return -1;
	} else {
		rem[max_index] -= val;
		return 0;
	}
}

int main (void) {
	freopen("sate2.in", "r", stdin);
	freopen("sate2.out", "w", stdout);

	scanf("%d", &t);

	while (t) {
		scanf ("%d %d %d", &n, &m, &k);

		memset(taken, 0, sizeof(taken));

		for (int i = 1; i <= n; ++i) {
			scanf("%d", &v[i]);
		}

		if (!(m % k)) {
			sort(v + 1, v + n + 1);

			int S = m / k;
			for (int i = 1; i <= k; ++i)
				rem[i] = S;

			int ok = 1;

			for (int i = n; i >= 1; --i) {
				if (find_decr(v[i]) == -1) {
					ok = 0;
					break;
				}
			}

			if (ok == 1) {
				printf("DA\n"); 
			} else {
				printf("NU\n");
			}
		} else {
			printf("NU\n");
		}

		--t;
	}
}