//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; } |