#include <bits/stdc++.h>
#define FWD(a,b,c) for(int a=(b); a<(c); ++a)
#define BCK(a,b,c) for(int a=(b); a>(c); --a)
using namespace std;
typedef long long LL;
const int MAXN = 100010;
const int MAXD = 256 * 1024 + 3;
const int INF = 1000000010;
int n;
LL z;
struct monster{
int dmg, pot, i;
} M[MAXN];
inline bool cmp(const monster &a, const monster &b){
int sa = (a.dmg <= a.pot) ? 0 : 1;
int sb = (b.dmg <= b.pot) ? 0 : 1;
if(sa != sb) return sa < sb;
if(sa == 0)
return a.dmg < b.dmg;
return a.pot > b.pot;
}
int main(){
scanf("%d %lld", &n, &z);
FWD(i,0,n){
scanf("%d %d", &M[i].dmg, &M[i].pot);
M[i].i = i;
}
sort(M, M+n, cmp);
FWD(i,0,n){
if(z <= M[i].dmg){
printf("NIE\n");
return 0;
}
z += M[i].pot - M[i].dmg;
}
printf("TAK\n");
FWD(i,0,n) printf("%d ", M[i].i+1);
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 | #include <bits/stdc++.h> #define FWD(a,b,c) for(int a=(b); a<(c); ++a) #define BCK(a,b,c) for(int a=(b); a>(c); --a) using namespace std; typedef long long LL; const int MAXN = 100010; const int MAXD = 256 * 1024 + 3; const int INF = 1000000010; int n; LL z; struct monster{ int dmg, pot, i; } M[MAXN]; inline bool cmp(const monster &a, const monster &b){ int sa = (a.dmg <= a.pot) ? 0 : 1; int sb = (b.dmg <= b.pot) ? 0 : 1; if(sa != sb) return sa < sb; if(sa == 0) return a.dmg < b.dmg; return a.pot > b.pot; } int main(){ scanf("%d %lld", &n, &z); FWD(i,0,n){ scanf("%d %d", &M[i].dmg, &M[i].pot); M[i].i = i; } sort(M, M+n, cmp); FWD(i,0,n){ if(z <= M[i].dmg){ printf("NIE\n"); return 0; } z += M[i].pot - M[i].dmg; } printf("TAK\n"); FWD(i,0,n) printf("%d ", M[i].i+1); printf("\n"); return 0; } |
polski