Cod sursa(job #1579800)

Utilizator aditzu7Adrian Capraru aditzu7 Data 25 ianuarie 2016 08:54:36
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include <stdio.h>
#include <algorithm>
#include <cmath>
FILE*f=fopen("rucsac.in","r");
FILE*g=fopen("rucsac.out","w");
using namespace std;
struct ruc{
int gu,c;
int o;

}v[5001];
int compare(ruc a,ruc b){
if(fabs((float)a.c/a.gu-(float)b.c/b.gu)<0.00001) return(a.gu<b.gu);
    return((float)a.c/a.gu>(float)b.c/b.gu);

}
int main()
{
int n;
int  Gr;

fscanf(f,"%d%d",&n,&Gr);
for(int i=1;i<=n;i++)
fscanf(f,"%d%d",&v[i].gu,&v[i].c);
sort(v+1,v+n+1,compare);
int i=1;
float s=0;
while(i<=n&&Gr>0){

    if(v[i].gu<Gr) {Gr-=v[i].gu;s+=v[i].c;
}
else Gr=0;
i++;
}
fprintf(g,"%.0f",s);
    fclose(f);
    fclose(g);



    return 0;
}