#include <iostream>
#include <algorithm>
#include <cstdio>
#include <vector>
using namespace std;
struct monster{
int dmg;
int pot;
int nr;
};
bool compare(const monster& x,const monster& y){
return x.dmg < y.dmg;
}
bool czy=1;
int n, ilep, ilen, a, b;
long long int hp, absol;
monster mob;
vector <monster> pos, neg;
int main()
{
scanf("%d %I64d", &n, &hp );
for(int z=1; z<=n; z++)
{
scanf("%d %d", &mob.dmg, &mob.pot);
mob.nr=z;
absol+=mob.pot-mob.dmg;
if(mob.pot-mob.dmg >= 0){
pos.push_back(mob);
ilep++;
}
else{
neg.push_back(mob);
ilen++;
}
}
if(hp+absol<=0)
printf("NIE\n");
else{
sort(pos.begin(), pos.end(), compare);
for(int x=0; x<ilep; x++)
{
hp-=pos[x].dmg;
if(hp<=0){
czy=0;
x=ilep+1;
}
else
hp+=pos[x].pot;
}
if(czy==1){
sort(neg.begin(), neg.end(), compare);
for(int c=ilen-1; c>=0; c--)
{
hp-=neg[c].dmg;
if(hp<=0){
czy=0;
c=-1;
}
else
hp+=neg[c].pot;
}
}
if(czy==0)
printf("NIE\n");
else
{
printf("TAK\n");
for(int v=0;v<ilep;v++)
printf("%d ", pos[v].nr);
for(int m=ilen-1; m>=0; m--)
printf("%d ", neg[m].nr);
printf("\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 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | #include <iostream> #include <algorithm> #include <cstdio> #include <vector> using namespace std; struct monster{ int dmg; int pot; int nr; }; bool compare(const monster& x,const monster& y){ return x.dmg < y.dmg; } bool czy=1; int n, ilep, ilen, a, b; long long int hp, absol; monster mob; vector <monster> pos, neg; int main() { scanf("%d %I64d", &n, &hp ); for(int z=1; z<=n; z++) { scanf("%d %d", &mob.dmg, &mob.pot); mob.nr=z; absol+=mob.pot-mob.dmg; if(mob.pot-mob.dmg >= 0){ pos.push_back(mob); ilep++; } else{ neg.push_back(mob); ilen++; } } if(hp+absol<=0) printf("NIE\n"); else{ sort(pos.begin(), pos.end(), compare); for(int x=0; x<ilep; x++) { hp-=pos[x].dmg; if(hp<=0){ czy=0; x=ilep+1; } else hp+=pos[x].pot; } if(czy==1){ sort(neg.begin(), neg.end(), compare); for(int c=ilen-1; c>=0; c--) { hp-=neg[c].dmg; if(hp<=0){ czy=0; c=-1; } else hp+=neg[c].pot; } } if(czy==0) printf("NIE\n"); else { printf("TAK\n"); for(int v=0;v<ilep;v++) printf("%d ", pos[v].nr); for(int m=ilen-1; m>=0; m--) printf("%d ", neg[m].nr); printf("\n"); } } return 0; } |
English