Cod sursa(job #1579792)

Utilizator Valentin0709Datcu George Valentin Valentin0709 Data 25 ianuarie 2016 08:50:27
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<cmath>
using namespace std;

FILE*f=fopen("rucsac.in","r");
FILE*g=fopen("rucsac.out","w");

struct ruc{
  int c,w;
} v[10000];

int comp(ruc a, ruc b) {
  if(fabs((float)a.c/a.w-(float)b.c/b.w)<0.0001) return a.c<b.c;
  else return (float)a.c/a.w>(float)b.c/b.w;
}

int n,w,i,gr,p;

int main() {

   fscanf(f,"%d%d",&n,&gr);

   for(i=1;i<=n;i++) {
     fscanf(f,"%d%d",&v[i].w,&v[i].c);
   }

   sort(v+1,v+n+1,comp);

   i=1;
   while(i<=n&&gr>0) {
    if(v[i].w<=gr) {
        p=p+v[i].c;
        gr=gr-v[i].w;
    }
    i++;
   }

   fprintf(g,"%d",p);

    return 0;
}