Cod sursa(job #1709400)

Utilizator pistakuszSAPIENTIA reMechLis pistakusz Data 28 mai 2016 12:05:41
Problema Consecutive Scor 0
Compilator c Status done
Runda ONIS 2016 - Runda - 2 - ACM ICPC Romanian Programming Contest Marime 1.43 kb
#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);
}