Pagini recente » Cod sursa (job #376514) | Cod sursa (job #1884857) | Cod sursa (job #733968) | Cod sursa (job #1777945) | Cod sursa (job #2291750)
#include <fstream>
#include <set>
using namespace std;
ifstream fin ("rucsac.in");
ofstream fout("rucsac.out");
int n,g,i,j,maxim;
pair<int,int> v[5005];
void citire(){
fin>>n>>g;
for (i=1;i<=n;i++)
fin>>v[i].first>>v[i].second;
}
void sortare(){
for (i=1;i<n;i++)
for (j=i+1;j<=n;j++)
if (v[i].second<v[j].second)
swap(v[i],v[j]);
for (i=1;i<n;i++)
for (j=i+1;j<=n;j++)
if (v[i].first>v[j].first && v[i].second==v[j].second)
swap(v[i],v[j]);
}
int rucsac(int i){
int k=0;
int sol=0;
while (k<g && i<=n){
if (k+v[i].first<=g){
k+=v[i].first;
sol+=v[i].second;
}
i++;
}
return sol;
}
int main(){
citire();
sortare();
for (i=1;i<=n;i++)
maxim=max(maxim,rucsac(i));
fout<<maxim;
fin.close();
fout.close();
return 0;
}