//Bohater [B], PA 2014, runda 2 //Wiktoria Kośny #include<cstdio> #include<algorithm> using namespace std; const int MN=100005; pair<pair<int, int>, int> dane[2][MN]; int n, idane[2], ok=1; long long hp[2]; int main(){ int i, a, b; scanf("%d %lld", &n, &hp[0]); hp[1]=hp[0]; idane[0]=0; idane[1]=0; for(i=0; i<n; i++){ scanf("%d %d", &a, &b); if(b>=a){ dane[0][idane[0]].first=make_pair(a, b); dane[0][idane[0]].second=i+1; idane[0]++; } else{ dane[1][idane[1]].first=make_pair(b, a); dane[1][idane[1]].second=i+1; idane[1]++; } hp[1]+=b-a; //printf("!!!! %d\n", hp[1]); } for(int d=0; d<2 && ok==1; d++){ sort(dane[d], dane[d]+idane[d]); //printf("----%d----\n", d); /*for(i=0; i<idane[d]; i++) printf("%d %d\n", dane[d][i].first.first, dane[d][i].first.second); printf("\n");*/ for(i=0; i<idane[d]; i++){ if(dane[d][i].first.first<hp[d]){ hp[d]+=-dane[d][i].first.first+dane[d][i].first.second; //printf("hp %d \n", hp[d]); } else ok=0; } } if(ok==0) printf("NIE\n"); else{ printf("TAK\n"); for(i=0; i<idane[0]; i++) printf("%d ", dane[0][i].second); for(i=idane[1]-1; i>=0; i--) printf("%d ", dane[1][i].second); } 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 61 | //Bohater [B], PA 2014, runda 2 //Wiktoria Kośny #include<cstdio> #include<algorithm> using namespace std; const int MN=100005; pair<pair<int, int>, int> dane[2][MN]; int n, idane[2], ok=1; long long hp[2]; int main(){ int i, a, b; scanf("%d %lld", &n, &hp[0]); hp[1]=hp[0]; idane[0]=0; idane[1]=0; for(i=0; i<n; i++){ scanf("%d %d", &a, &b); if(b>=a){ dane[0][idane[0]].first=make_pair(a, b); dane[0][idane[0]].second=i+1; idane[0]++; } else{ dane[1][idane[1]].first=make_pair(b, a); dane[1][idane[1]].second=i+1; idane[1]++; } hp[1]+=b-a; //printf("!!!! %d\n", hp[1]); } for(int d=0; d<2 && ok==1; d++){ sort(dane[d], dane[d]+idane[d]); //printf("----%d----\n", d); /*for(i=0; i<idane[d]; i++) printf("%d %d\n", dane[d][i].first.first, dane[d][i].first.second); printf("\n");*/ for(i=0; i<idane[d]; i++){ if(dane[d][i].first.first<hp[d]){ hp[d]+=-dane[d][i].first.first+dane[d][i].first.second; //printf("hp %d \n", hp[d]); } else ok=0; } } if(ok==0) printf("NIE\n"); else{ printf("TAK\n"); for(i=0; i<idane[0]; i++) printf("%d ", dane[0][i].second); for(i=idane[1]-1; i>=0; i--) printf("%d ", dane[1][i].second); } return 0; } |