Cod sursa(job #1579779)

Utilizator Andrei2001Andrei Parvulescu Andrei2001 Data 25 ianuarie 2016 08:41:36
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <algorithm>
#include <stdio.h>
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) {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;
}