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