Pagini recente » Monitorul de evaluare | Rating Cristian Radulescu (RCristian) | Monitorul de evaluare | Cod sursa (job #2754857) | Cod sursa (job #1291140)
#include <iostream>
#include <fstream>
using namespace std;
int n,gr,i,ok;
float aux,c[5001],g[5001],p[5001],castig,nr,cmax;
ifstream in("rucsac.in");
ofstream out("rucsac.out");
int main()
{
in>>n;
in>>gr;
for(i=1;i<=n;i++)
{
in>>g[i];
in>>c[i];
p[i]=c[i]/g[i]*c[i];
}
do
{
ok=0;
for(i=1;i<n;i++)
{
if(p[i]<p[i+1])
{
aux=c[i];c[i]=c[i+1];c[i+1]=aux;
aux=g[i];g[i]=g[i+1];g[i+1]=aux;
aux=p[i];p[i]=p[i+1];p[i+1]=aux;
ok=1;
}
}
}while(ok==1);
i=0;castig=0;nr=1;
while (gr>0&&i<n&&nr==1)
{
i++;
if(g[i]<=gr)
{
gr=gr-g[i];
castig=castig+c[i];
}
else
{
nr=0;
}
}
cmax=castig;
while(i<n)
{
if(gr!=0)
{
gr=gr+g[i];
castig=castig-c[i];
i++;
if(gr>=g[i])
{
gr=gr+g[i];
castig=castig+c[i];
if(cmax<castig)
cmax=castig;
}
}
else
i=n;
}
out<<cmax;
}