Pagini recente » Cod sursa (job #2006289) | Cod sursa (job #27738) | Cod sursa (job #1594760) | Cod sursa (job #2817256) | Cod sursa (job #3343556)
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");
int main(){
int n,g;
vector<pair<int,int>> a;
fin>>n>>g;
for(int i=0;i<n;i++){
int w,p;
fin>>w>>p;
a.push_back({w,p});
}
sort(a.begin(),a.end(), [](auto &x,auto &y){
return x.second > y.second;
});
int sumg=0,i=0,sum=0;
while(sumg+a[i].first <= g){
sum+=a[i].second;
sumg+=a[i++].first;
}
sort(a.begin(),a.end(), [](auto &x,auto &y){
return x.first > y.first;
});
int sumg2=0,i2=0,sum2=0;
while(sumg2+a[i].first <= g){
sum2+=a[i].second;
sumg2+=a[i++].first;
}
fout<<max(sum,sum2)<<'\n';
}