Pagini recente » Cod sursa (job #1319558) | Cod sursa (job #2741795) | Sandbox (cutiuţa cu năsip) | Cod sursa (job #2060476) | Cod sursa (job #2944475)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");
int n, g, w, p;
vector<pair<int, int>> v;
int main(){
//ifstream f("file.in");
fin>>n>>g;
for(int i=1; i<=n; i++)
{
fin>>w>>p;
if(p%w == 0)
v.push_back(make_pair(p/w, w));
else
{
v.push_back(make_pair((p/w + 1), 1));
v.push_back(make_pair(p/w, w-1));
}
}
sort(v.begin(), v.end());
// for(int i=n-1; i>=0; i--)
// cout<<v[i].first<<" "<<v[i].second<<endl;
int i = v.size()-1, greutate = 0, profit = 0;
while(i>= 0 || greutate < g) {
if(greutate + v[i].second > g)
{
// cout<<v[i].first<<" - "<< v[i].second<<endl;
greutate = g;
profit += (g - greutate)*v[i].first;
}
else
{
//cout<<v[i].first<<" "<< v[i].second<<endl;
greutate += v[i].second;
profit += v[i].second*v[i].first;
}
i--;
}
fout<<profit;
return 0;
}