#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
vector < pair < int,int > > p;
vector < pair < int,int> > p2, p3, p4;
vector <int> result;
int n, z;
int main(){
scanf("%d%d",&n,&z);
for (int i = 0; i < n; i++){
int d,a;
scanf("%d%d",&d,&a);
p.push_back( make_pair( d,a ));
}
for (int i = 0; i < n; i++){
p2.push_back( make_pair( p[i].first - p[i].second, i ));
}
sort( p2.begin(), p2.end() );
for (int i = 0; i < p2.size(); i++){
if (p2[i].first <= 0){
p3.push_back( make_pair( p[ p2[i].second ].first , p2[i].second ));
}
else {
p4.push_back( make_pair( p[ p2[i].second ].second, p2[i].second));
}
}
sort( p3.begin(), p3.end() );
sort( p4.begin(), p4.end() );
for (int i = 0; i < p3.size(); i++){
if (z - p3[i].first > 0){
z = z - p[ p3[i].second ].first + p[ p3[i].second ].second;
result.push_back( p3[i].second );
}
else {
printf("NIE\n");
return 0;
}
}
for (int i = p4.size()-1; i >= 0; i--){
if (z - p[ p4[i].second ].first > 0){
z = z - p[ p4[i].second ].first + p[ p4[i].second ].second;
result.push_back( p4[i].second );
}
else {
printf("NIE\n");
return 0;
}
}
printf("TAK\n");
for (int i = 0; i < result.size(); i++){
printf("%d ", result[i]+1);
}
}
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 | #include <cstdio> #include <vector> #include <algorithm> using namespace std; vector < pair < int,int > > p; vector < pair < int,int> > p2, p3, p4; vector <int> result; int n, z; int main(){ scanf("%d%d",&n,&z); for (int i = 0; i < n; i++){ int d,a; scanf("%d%d",&d,&a); p.push_back( make_pair( d,a )); } for (int i = 0; i < n; i++){ p2.push_back( make_pair( p[i].first - p[i].second, i )); } sort( p2.begin(), p2.end() ); for (int i = 0; i < p2.size(); i++){ if (p2[i].first <= 0){ p3.push_back( make_pair( p[ p2[i].second ].first , p2[i].second )); } else { p4.push_back( make_pair( p[ p2[i].second ].second, p2[i].second)); } } sort( p3.begin(), p3.end() ); sort( p4.begin(), p4.end() ); for (int i = 0; i < p3.size(); i++){ if (z - p3[i].first > 0){ z = z - p[ p3[i].second ].first + p[ p3[i].second ].second; result.push_back( p3[i].second ); } else { printf("NIE\n"); return 0; } } for (int i = p4.size()-1; i >= 0; i--){ if (z - p[ p4[i].second ].first > 0){ z = z - p[ p4[i].second ].first + p[ p4[i].second ].second; result.push_back( p4[i].second ); } else { printf("NIE\n"); return 0; } } printf("TAK\n"); for (int i = 0; i < result.size(); i++){ printf("%d ", result[i]+1); } } |
English