代码如下
#include <iostream>
#include <algorithm>
#define N 100005
using namespace std;
int n,v;
struct good{int w,v,id;}a[N];
bool cmp(good x,good y){
if(x.v/x.w==y.v/y.w)return x.w>=y.w;
return x.v/x.w>y.v/y.w;
}
int q[N],bck,Asriel;
int main(){
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>n>>v;
for(int i=1;i<=n;i++){
int t,p;
cin>>t>>p;a[i]={t,p,i};
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++){
int t=a[i].w,p=a[i].v,id=a[i].id;
if(t<=v)v-=t,q[++bck]=id,Asriel+=p;
}
cout<<Asriel<<"\n";
sort(q+1,q+bck+1);
for(int i=1;i<=bck;i++)cout<<q[i]<<" ";
return 0;
}