#include<bits/stdc++.h> using namespace std; int n,v,kg,mwz,ekg[1010101],sm,sk,i1,i2,sg; double mk; int mi,mii; double kmwz[1010101]; int main() { cin>>n>>v; for(int i=0; i<n; i++) { cin>>kg>>mwz; ekg[i]=kg; kmwz[i]=1.0*mwz/kg; } for(int i=0; i<n; i++) { mk=0; sg==1; for(int j=0; j<n; j++) { if(mk<kmwz[j]) { mk=kmwz[j]; mi=ekg[j]; mii=j; i1=0; i2=0; sg==1; } else { if(mk==kmwz[j]) { sg++; if(mi==1) { i1++; } else { i2++; } } } } if(sg>=2) { if(i1>=1&&i2>=1) { if(v>=sk+2) { sk=sk+2; sm=sm+mk*2; for(int j=0; j<n; j++) { if(ekg[j]==2&&kmwz[j]==mk) { ekg[j]=0; kmwz[j]=0; } } } else { sk=sk+1; sm=sm+mk; for(int j=0; j<n; j++) { if(ekg[j]==1&&kmwz[j]==mk) { ekg[j]=0; kmwz[j]=0; } } } } else { if(i2>=2) { sk=sk+2; sm=sm+mk*2; for(int j=0; j<n; j++) { if(ekg[j]==2&&kmwz[j]==mk) { ekg[j]=0; kmwz[j]=0; } } } else { sk=sk+1; sm=sm+mk; for(int j=0; j<n; j++) { if(ekg[j]==1&&kmwz[j]==mk) { ekg[j]=0; kmwz[j]=0; } } } } } if(v>=sk+mi) { sk=sk+mi; sm=sm+mk*mi; kmwz[mii]=0; ekg[mii]=0; } if(v==sk) { break; } else { kmwz[mii]=0; ekg[mii]=0; } } cout<<sm; return 0; } /************************************************************** Problem: 1546 User: admin Language: C++ Result: Accepted Time:5 ms Memory:13916 kb ****************************************************************/