Pagini recente » Monitorul de evaluare | Cod sursa (job #1604507) | Cod sursa (job #1768381) | Cod sursa (job #1767841) | Cod sursa (job #1636220)
#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;
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];
for(l=i;l<=n;l++)
if(gr+a[l]<=greutate)
{s=s+b[l];gr=gr+a[l];
}
}}
g<<s<<'\n';
f.close();
g.close();
return 0;
}