Cod sursa(job #1536258)

Utilizator Costel_DraghiciDraghici Constantin Costel_Draghici Data 25 noiembrie 2015 21:31:28
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <iostream>
#define Nmax 10001
#include <fstream>
#include <iomanip>
using namespace std;
ifstream f("rucsac.in");
ofstream g("rucsac.out");
int N,k;
float G;
struct obiect{
float g,c,r;}
a[Nmax],s[Nmax];
void read()
{ f>>G>>N;
    for(int i=1;i<=N;i++)
     f>>a[i].g>>a[i].c;}
void ordonare()
{
    obiect aux;
    for(int i=1;i<N;i++)
        for(int j=i+1;j<=N;j++)
        if(a[i].c/a[i].g<a[j].c/a[j].g)
    {aux=a[i];a[i]=a[j];a[j]=aux;}
}
void write(obiect a[])
{   int c=0;
    for(int i=1;i<=k;i++)
        {c=c+a[i].c*a[i].r;}
        g<<c<<"\n";
}
void greedy()
{
    int i=1;
    float sp=0;
    while(sp<G)
    { if(sp+a[i].g<=G)
     {sp=sp+a[i].g;
     s[++k]=a[i];
     s[k].r=1;}
     else
     {
        s[++k]=a[i];
        s[k].r=(G-sp)/a[i].g;
        sp=G;
     }
    i++;
    }
    write(s);
}
int main()
{read();
ordonare();
greedy();
}