#include<bits/stdc++.h>
using namespace std;
struct node{
int t,p;
char num;
}a[100001];
inline bool cmp(node xx,node yy){
if(xx.t!=yy.t)
if(xx.t==1)
return (xx.p<<1)>yy.p;
else
return xx.p>(yy.p<<1);
else
return xx.p>yy.p;
}
int main(){
int n,v,ans=0;
string flag="";
scanf("%d%d",&n,&v);
for(int i=1;i<=n;++i){
scanf("%d%d",&a[i].t,&a[i].p);
a[i].num=char(i)+'0';
}
sort(a+1,a+n+1,cmp);
//for(int i=1;i<=n;i++)
// cout<<a[i].p<<endl;
int i=1;
for(;i<=n&&v>=a[i].t;++i){
ans+=a[i].p;
v-=a[i].t;
flag+=a[i].num;
}
if(v==1)
for(int j=i;j<=n;++j)
if(a[j].t==1){
flag+=a[j].num;
ans+=a[j].p;
break;
}
sort(flag.begin(),flag.end());
printf("%d\n",ans);
for(int k=0;k<flag.size();++k)
cout<<flag[k]<<' ';
return 0;
}
请大佬们看一下我的代码哪里出了问题,卡在了 #4 测试点