Cod sursa(job #1709492)

Utilizator UPT_sThorUPT sThor UPT_sThor Data 28 mai 2016 12:33:44
Problema Sate2 Scor 100
Compilator cpp Status done
Runda ONIS 2016 - Runda - 2 - ACM ICPC Romanian Programming Contest Marime 0.99 kb
#include <fstream>
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>

#define NMAX 3005

using namespace std;

ifstream in ( "sate2.in" );
ofstream out ( "sate2.out" );

int T;
int v[NMAX] ;
int N , M , K ;
int Sum;
int part[5];
	

int main ( void )
{
  	int i , j  , l ;	
	in >> T;
	for ( i = 1 ; i <= T ; ++i){
	part[1] = part[2] = part[3] = part[4] = part[5] = 0 ;	
	in >> N >> M >> K ;
	Sum = M /K;
       
	for ( j = 1 ; j <= N ; ++j ){
		in >> v[j];
	}
	int count = 0 , nr_used = 0 ,actualSum = 0  ;
	sort ( v + 1 , v + N + 1 );
	
	for ( j = N ; j > 0 ; --j ){
		
		for ( l = 1 ; l <= K ; ++l ){
			if ( v[j] + part[l] <= Sum ) {
				part[l] += v[j] ;
				//cout << "partitia " << l << " suma : "  << part[l] << "\n";
				break;
			}	
		}
	}
	for ( j = 1 ; j <= K ; ++j ){
		//cout << part[j] << " ";
		if ( part[j] == Sum )
			++count;
	}
	//cout << " \ngata testul\n";
		
	if ( count == K && K*part[1] == M )
		out << "DA\n";
	else 
		out << "NU\n";

	
     }
        return 0;
}