#include <iostream>
#include <algorithm>
#include <cstdio>
#include <vector>
#include <set>
#include <map>
#include <utility>
#include <queue>
using namespace std;
typedef pair<pair<int,int>,int > fight;
bool read(priority_queue<fight> &p,priority_queue<fight> &m,int N,long long &points2){
for(int i=0;i<N;++i){
int d,a;
cin>>d>>a;
long long s=a-d; points2+=s;
if(s<0) m.push(make_pair(make_pair(-a,d),i));
else p.push(make_pair(make_pair(-d,a),i));
}
return points2>0;}
bool dequeue_p(priority_queue<fight> &x,long long &points,vector<int>& v){
bool b=true;
while(b && !x.empty()){
fight d=x.top();
if(-d.first.first>=points) b=false;
else {v.push_back(d.second);
points+=d.first.second+d.first.first;
x.pop();
}
//cout<<"pop"<<d.second<<endl;
}
return (x.empty());
}
int main()
{
ios_base::sync_with_stdio(false);
int N;
cin>>N;
long long points,points2;
cin>>points;
points2=points;
priority_queue<fight> p,m;
vector<int> v1,v2;
if(!read(p,m,N,points2)) cout<<"NIE"<<endl;
else {
if(!dequeue_p(p,points,v1) || !dequeue_p(m,points2,v2)) cout<<"NIE"<<endl;
else {
cout<<"TAK"<<endl;
for (auto i:v1) cout<<i+1<<" ";
for(auto it=v2.rbegin();it!=v2.rend();++it)
cout<<(*it)+1<<" ";
cout<<endl;
}
}
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 | #include <iostream> #include <algorithm> #include <cstdio> #include <vector> #include <set> #include <map> #include <utility> #include <queue> using namespace std; typedef pair<pair<int,int>,int > fight; bool read(priority_queue<fight> &p,priority_queue<fight> &m,int N,long long &points2){ for(int i=0;i<N;++i){ int d,a; cin>>d>>a; long long s=a-d; points2+=s; if(s<0) m.push(make_pair(make_pair(-a,d),i)); else p.push(make_pair(make_pair(-d,a),i)); } return points2>0;} bool dequeue_p(priority_queue<fight> &x,long long &points,vector<int>& v){ bool b=true; while(b && !x.empty()){ fight d=x.top(); if(-d.first.first>=points) b=false; else {v.push_back(d.second); points+=d.first.second+d.first.first; x.pop(); } //cout<<"pop"<<d.second<<endl; } return (x.empty()); } int main() { ios_base::sync_with_stdio(false); int N; cin>>N; long long points,points2; cin>>points; points2=points; priority_queue<fight> p,m; vector<int> v1,v2; if(!read(p,m,N,points2)) cout<<"NIE"<<endl; else { if(!dequeue_p(p,points,v1) || !dequeue_p(m,points2,v2)) cout<<"NIE"<<endl; else { cout<<"TAK"<<endl; for (auto i:v1) cout<<i+1<<" "; for(auto it=v2.rbegin();it!=v2.rend();++it) cout<<(*it)+1<<" "; cout<<endl; } } return 0; } |
English