Pagini recente » Cod sursa (job #722135) | Cod sursa (job #3244637) | Cod sursa (job #2261474) | Cod sursa (job #896138) | Cod sursa (job #1709402)
#include <stdio.h>
#include <stdlib.h>
int cmp ( const void* p1, const void* p2 )
{
return *((int*)p1) - *((int*)p2);
}
int main()
{
FILE* f = fopen("sate2.in", "r");
FILE* g = fopen("sate2.out", "w");
int t, n, m, k, i, j, *sat, sum, result;
fscanf(f, "%i", &t);
while ( t )
{
fscanf(f, "%i", &n);
fscanf(f, "%i", &m);
fscanf(f, "%i", &k);
if ( m % k == 0 )
{
result = m / k;
sat = (int*)malloc(n*sizeof(int));
for ( i=0; i<n; ++i )
{
fscanf(f, "%i", &sat[i]);
}
qsort(sat, n, sizeof(int), cmp);
for ( j=0; j<k; ++j )
{
sum = 0;
for ( i=n-1; i>=0 && sum<result; --i )
{
if ( sat[i] > 0 && sum + sat[i] <= result )
{
sum += sat[i];
sat[i] = -1;
}
}
if ( sum != result )
{
fprintf(g, "NU\n");
break;
}
}
if ( sum == result )
{
fprintf(g, "DA\n");
}
}
else
{
fprintf(g, "NU\n");
}
free(sat);
--t;
}
free(f);
fclose(f);
}