Cod sursa(job #1905628)

Utilizator mihaelamihaiuMihaela Mihaiu mihaelamihaiu Data 6 martie 2017 09:49:13
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <fstream>
#include <iomanip>
#include <math.h>

using namespace std;

ifstream fin("rucsac.in");
ofstream fout("rucsac.out");

struct obiect
{
    int g;
    float v;
    int indice;
};

struct obiect o[100];

int main()
{
    int n,i,j,poz,y;
    int G,S=0,V=0;
    float x;

    fin>>n>>G;

    for (i=1;i<=n;i++)
        {fin>>o[i].g;
        fin>>x;
        o[i].v=x/o[i].g;
        o[i].indice=i;}


    for(i=1;i<n;i++)
    {
        poz=i; x=o[i].v;y=o[i].g;
        for(j=i;j<=n;j++)
            if((o[j].v>x)||((o[j].v==x)&&(o[j].g>y)))
            {
                x=o[j].v;
                y=o[j].g;
                poz=j;
            }
        swap(o[i],o[poz]);
    }

    for(i=1;i<=n;i++)
        if(S+o[i].g<G)
        {
            S+=o[i].g;
            V+=ceil(o[i].g*o[i].v);
        }
        else
        {   poz=i;
            i=n+n;}

    fout<<V;
    return 0;
}