//Pakowanie [A], PA 2014, runda 2
//Wiktoria Kośny
#include<cstdio>
#include<algorithm>
using namespace std;
const int MN=25;
int n, m, dane[MN], pdane[5*MN], plec[MN], wyn=1000;
int main(){
int i, j, sumka, wsk;
scanf("%d %d", &n, &m);
for(i=0; i<n; i++)
scanf("%d", &dane[i]);
for(i=0; i<m; i++)
scanf("%d", &pdane[i]);
sort(dane, dane+n);
sort(pdane, pdane+m);
for(i=0; i<n; i++){
plec[i]=pdane[m-i-1];
}
/*for(i=0; i<n; i++)
printf("%d ", dane[i]);
printf("\n");
for(i=0; i<n; i++)
printf("%d ", plec[i]);
printf("\n");*/
do{
wsk=0;
sumka=0;
for(i=0; i<n; i++){
if(wsk<n && sumka+dane[i]<=plec[wsk])
sumka+=dane[i];
else{
sumka=0;
wsk++;
i--;
}
}
if(wsk+1<wyn){
/*if(wyn==1000){
for(i=0; i<n; i++)
printf("%d ", dane[i]);
}*/
wyn=wsk+1;
}
}while(next_permutation(dane, dane+n));
if(wyn<=n)
printf("%d\n", wyn);
else
printf("NIE\n");
return 0;
}
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 | //Pakowanie [A], PA 2014, runda 2 //Wiktoria Kośny #include<cstdio> #include<algorithm> using namespace std; const int MN=25; int n, m, dane[MN], pdane[5*MN], plec[MN], wyn=1000; int main(){ int i, j, sumka, wsk; scanf("%d %d", &n, &m); for(i=0; i<n; i++) scanf("%d", &dane[i]); for(i=0; i<m; i++) scanf("%d", &pdane[i]); sort(dane, dane+n); sort(pdane, pdane+m); for(i=0; i<n; i++){ plec[i]=pdane[m-i-1]; } /*for(i=0; i<n; i++) printf("%d ", dane[i]); printf("\n"); for(i=0; i<n; i++) printf("%d ", plec[i]); printf("\n");*/ do{ wsk=0; sumka=0; for(i=0; i<n; i++){ if(wsk<n && sumka+dane[i]<=plec[wsk]) sumka+=dane[i]; else{ sumka=0; wsk++; i--; } } if(wsk+1<wyn){ /*if(wyn==1000){ for(i=0; i<n; i++) printf("%d ", dane[i]); }*/ wyn=wsk+1; } }while(next_permutation(dane, dane+n)); if(wyn<=n) printf("%d\n", wyn); else printf("NIE\n"); return 0; } |
English