Cod sursa(job #1709464)

Utilizator pistakuszSAPIENTIA reMechLis pistakusz Data 28 mai 2016 12:24:45
Problema Sate2 Scor 0
Compilator c Status done
Runda ONIS 2016 - Runda - 2 - ACM ICPC Romanian Programming Contest Marime 1.48 kb
#include <stdio.h>
#include <stdlib.h>

int cmp ( const void* p1, const void* p2 )
{
    return *((int*)p1) - *((int*)p2);
}

int main()
{
    freopen("sate2.in", "r",stdin);
    freopen("sate2.out", "w",stdout);
    int t, n, m, k, i, j, *sat, sum, result;
    scanf("%i", &t);
    while ( t )
    {
        scanf("%i", &n);
        scanf("%i", &m);
        scanf("%i", &k);
        if ( m % k == 0 )
        {
            result = m / k;
            sat = (int*)malloc(n*sizeof(int));
            for ( i=0; i<n; ++i )
            {
                scanf("%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 )
                {
                    printf("NU\n");
                    fflush(stdout);
                    break;
                }
            }

            if ( sum == result )
            {
                printf( "DA\n");
                fflush(stdout);
            }
            free(sat);
        }
        else
        {
            printf( "NU\n");
            fflush(stdout);
        }

        --t;
    }
    return 0;
}