Pagini recente » Cod sursa (job #1171920) | Cod sursa (job #810872) | Cod sursa (job #2895146) | Cod sursa (job #3261474) | Cod sursa (job #1579786)
#include <algorithm>
#include <stdio.h>
#include <cmath>
using namespace std;
FILE*f=fopen("rucsac.in","r");
FILE*h=fopen("rucsac.out","w");
struct ob
{
int c,g;
int o;
}a[5001];
int n;
int gm,ct;
int comp(ob a,ob b)
{
if (fabs(a.c/1.0/a.g-b.c/1.0/b.g)<0.0001) return a.g<b.g;
else return a.c/1.0/a.g-b.c/1.0/b.g;
}
void citire()
{
int i;
fscanf(f,"%d%d",&n,&gm);
for (i=1;i<=n;i++) fscanf(f,"%d%d",&a[i].g,&a[i].c);
}
int main()
{
int i;
citire();
sort(a+1,a+n+1,comp);
ct=0;
i=1;
while (gm>0&&i<=n)
{
if (a[i].g<gm)
{
gm-=a[i].g;
ct+=a[i].c;
}
else
{
if (a[i].g==gm)
{
ct+=a[i].c;
gm=0;
}
}
i++;
}
fprintf(h,"%d",ct);
return 0;
}