#include<cstdio>
#include<algorithm>
#include<vector>
using namespace std;
vector<pair<int, int> > input;
bool sort_fun(int p1, int p2){
// return 0;
return (input[p1].first < input[p2].first) ? true : false;
}
bool sort_fun2(int p1, int p2){
return ! sort_fun(p1, p2);
}
int main(){
int n, z;
scanf("%d %d", &n, &z);
input.resize(n);
vector<int> dodatnie;
vector<int> ujemne;
for (int i=0; i<n; ++i){
int a, b;
scanf("%d %d", &a, &b);
input[i] = pair<int, int>(a, b);
if (b - a < 0){
ujemne.push_back(i);
}else{
dodatnie.push_back(i);
}
}
sort(dodatnie.begin(), dodatnie.end(), sort_fun);
sort(ujemne.begin(), ujemne.end(), sort_fun2);
/* for (int i=0; i<dodatnie.size(); ++i){
printf("%d ", dodatnie[i]);
}
printf("\n");
for (int i=0; i<ujemne.size(); ++i){
printf("%d ", ujemne[i]);
}
printf("\n");*/
int res = z;
for (int i=0; i<dodatnie.size(); ++i){
int j = dodatnie[i];
if (res - input[j].first > 0){
res += (input[j].second - input[j].first);
}else{
printf("NIE\n");
return 0;
}
}
// printf("res = %d\n", res);
for (int i=0; i<ujemne.size(); ++i){
int j= ujemne[i];
if (res - input[j].first > 0){
res += (input[j].second - input[j].first);
}else{
printf("NIE\n");
return 0;
}
}
printf("TAK\n");
for (int i=0; i<dodatnie.size(); ++i){
printf("%d ", dodatnie[i]+1);
}
for (int i=0; i<ujemne.size(); ++i){
printf("%d ", ujemne[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 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | #include<cstdio> #include<algorithm> #include<vector> using namespace std; vector<pair<int, int> > input; bool sort_fun(int p1, int p2){ // return 0; return (input[p1].first < input[p2].first) ? true : false; } bool sort_fun2(int p1, int p2){ return ! sort_fun(p1, p2); } int main(){ int n, z; scanf("%d %d", &n, &z); input.resize(n); vector<int> dodatnie; vector<int> ujemne; for (int i=0; i<n; ++i){ int a, b; scanf("%d %d", &a, &b); input[i] = pair<int, int>(a, b); if (b - a < 0){ ujemne.push_back(i); }else{ dodatnie.push_back(i); } } sort(dodatnie.begin(), dodatnie.end(), sort_fun); sort(ujemne.begin(), ujemne.end(), sort_fun2); /* for (int i=0; i<dodatnie.size(); ++i){ printf("%d ", dodatnie[i]); } printf("\n"); for (int i=0; i<ujemne.size(); ++i){ printf("%d ", ujemne[i]); } printf("\n");*/ int res = z; for (int i=0; i<dodatnie.size(); ++i){ int j = dodatnie[i]; if (res - input[j].first > 0){ res += (input[j].second - input[j].first); }else{ printf("NIE\n"); return 0; } } // printf("res = %d\n", res); for (int i=0; i<ujemne.size(); ++i){ int j= ujemne[i]; if (res - input[j].first > 0){ res += (input[j].second - input[j].first); }else{ printf("NIE\n"); return 0; } } printf("TAK\n"); for (int i=0; i<dodatnie.size(); ++i){ printf("%d ", dodatnie[i]+1); } for (int i=0; i<ujemne.size(); ++i){ printf("%d ", ujemne[i]+1); } printf("\n"); return 0; } |
English