Pagini recente » Cod sursa (job #2695679) | Cod sursa (job #1698859) | Cod sursa (job #2866058) | Cod sursa (job #2772348) | Cod sursa (job #1709418)
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
int t, n, m, k;
int v[3005];
char taken[3005];
int last_i;
int find_max (int M) {
for (int i = last_i; i >= 0; --i) {
if (v[i] <= M && !taken[i]) {
taken[i] = 1;
return v[i];
}
}
return -1;
}
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]);
}
sort(v + 1, v + n + 1);
int S = m / k;
int over = 0;
while (k && !over) {
int s = S;
last_i = n;
while (s) {
int res = find_max(s);
if (res == -1) {
over = 1;
printf("NU\n");
break;
}
s -= res;
}
--k;
}
if (!over) {
printf("DA\n");
}
--t;
}
}