Rt, #define int long long了,肯定不存在LL的问题。
#include <iostream>
#include <map>
#include <algorithm>
#define int long long
using namespace std;
const int N=100010;
int n,z,d,a,p[N],cnt,p2[N],cnt2;
map<int,int> mp,mp2,ans1,ans2;
signed main()
{
cin>>n>>z;
for(int i=1;i<=n;i++)
{
cin>>d>>a;
if(a-d>0)
{
p[++cnt]=d;
mp[d]=a;
ans1[d]=i;
}
else
{
p2[++cnt2]=a;
mp2[a]=d;
ans2[a]=i;
}
}
sort(p+1,p+cnt+1);
sort(p2+1,p2+cnt2+1);
for(int i=1;i<=cnt;i++)
{
z-=p[i];
if(z<=0)
{
cout<<"NIE";
return 0;
}
z+=mp[p[i]];
}
for(int i=cnt2;i>=1;i--)
{
z-=mp2[p2[i]];
if(z<=0)
{
cout<<"NIE";
return 0;
}
z+=p2[i];
}
cout<<"TAK"<<endl;
for(int i=1;i<=cnt;i++) cout<<ans1[p[i]]<<" ";
for(int i=cnt2;i>=1;i--) cout<<ans2[p2[i]]<<" ";
return 0;
}