Niestety, nie byliśmy w stanie w pełni poprawnie wyświetlić tego pliku, ponieważ nie jest zakodowany w UTF-8. Możesz pobrać ten plik i spróbować otworzyć go samodzielnie.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/*----------------------
Koniecko �ukasz - lukon
lukon10@wp.pl
----------------------*/
/*---------------------------------------- 
Potyczki Algorytmiczne 2014, runda 2
Zadanie: PAK
Pakowanie [A]
-----------------------------------------*/

#include <iostream>
#include <cstdlib>

using namespace std;

int compare (const void * a, const void * b)
{
  return ( *(int*)b - *(int*)a );
}

int dopasowanie(int przedmioty[], int n, int plecaki[], int m){
	int nr_prz = 0; //ile przedmiot�w ju� w plecaku
	
	for(int i=0; i < m; i++){
		for(int j=0; j < n; j++){			
			if(przedmioty[j]==0) continue;
				
			if(plecaki[i] >= przedmioty[j]){
				plecaki[i] -= przedmioty[j];
				przedmioty[j] = 0; //wyzerowanie
				nr_prz++;
				if(nr_prz == n) return i+1; //nie ma wi�cej przedmiot�w
			}		
		}		
	}
	return -1; //nie uda�o si�
} 

int main(){
	
	int n,m;
	cin >> n; //ilosc przedmiot�w
	cin >> m; //ilosc plecak�w
	
	int a[n]; //tablica z przedmiotami
	int c[m]; //tablica z plecakami
	
	for(int i=0; i < n; i++){
		cin >> a[i];
	}
	for(int i=0; i < m; i++){
		cin >> c[i]; 
	}
		
	qsort (a, n, sizeof(int), compare);
	qsort (c, m, sizeof(int), compare);
	
	int wynik = dopasowanie(a,n,c,m);
	if(wynik > 0){
		cout << wynik;
	}
	else
		cout << "NIE";	
}