Pagini recente » Cod sursa (job #3290269) | Cod sursa (job #3252652) | Cod sursa (job #37696) | Cod sursa (job #1867013) | Cod sursa (job #1636237)
#include <fstream>
using namespace std;
ifstream f("rucsac.in");
ofstream g("rucsac.out");
int greutate,a[5005],b[5005],i,n,aux,gr,sortat,s,l,x,kappa,ok1,maxi,greux;
void citire()
{
f>>n>>greutate;
for(i=1;i<=n;i++)
{
f>>a[i]>>b[i];
}
}
void sortare()
{ while(!sortat)
{sortat=1;
for(i=1;i<n;i++)
if(b[i]*a[i+1]<b[i+1]*a[i])
{
aux=a[i];
a[i]=a[i+1];
a[i+1]=aux;
aux=b[i];
b[i]=b[i+1];
b[i+1]=aux;
sortat=0;
}
else if(b[i]*a[i+1]==b[i+1]*a[i]&&b[i]<b[i+1])
{
aux=a[i];
a[i]=a[i+1];
a[i+1]=aux;
aux=b[i];
b[i]=b[i+1];
b[i+1]=aux;
sortat=0;
}
}
}
int main()
{
citire();
sortare();
for(i=1;i<=n;i++)
{s=s+b[i];gr=gr+a[i];if(gr>greutate){s=s-b[i];gr=gr-a[i];maxi=a[i+1];
while(!ok1)
{ok1=1;
for(l=i+1;l<=n;l++)
if(a[l]+gr<=greutate){ok1=0;
if(maxi<b[l]){maxi=b[l];greux=a[l];}
s=s+maxi;gr=gr+greux;
}
}
}
}
g<<s<<'\n';
f.close();
g.close();
return 0;
}