Cod sursa(job #1314772)

Utilizator catatacalba catalin catatac Data 12 ianuarie 2015 12:12:58
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.22 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("date.in");
ofstream gi("date.out");

void unitate(int n, int u[], int v[], int g[])
{
    for(int i=1;i<=n;i++)
        u[i]=v[i]/g[i];
}
void ordonare(int n, int o[],int u[],int v[],int g[])
{
    for(int i=1;i<n;i++)
        for(int j=i+1;j<=n;j++)
            if(u[i]<u[j])
            {
                swap(u[i],u[j]);
                swap(o[i],o[j]);
                swap(g[i],g[j]);
                swap(v[i],v[j]);
            }
}
void rucsac(int n, int gr, int o[], int u[], int v[], int g[])
{
    int gg=0,vv=0,ii;
    for(int i=1;gg+g[i]<=gr;i++)
    {
            gg=gg+g[i];
            vv=vv+v[i];
            gi<<v[i]<<' '<<gg<<endl;
            ii=i+1;
    }
    if(ii<=n)
    {
        gg=gr-gg;
        vv=vv+gg*u[ii];
        gi<<u[ii]*gg<<' '<<gg<<endl;
    }
    gi<<"valoare totala: "<<vv<<endl;
    gi<<"nr de obiecte: "<<ii<<endl;
}
int main()
{
    int n, gr,o[10],v[10],g[10],u[10];
    f>>n>>gr;
    for(int i=1;i<=n;i++)
    {
        f>>v[i]>>g[i];
        o[i]=i;
    }
    unitate(n,u,v,g);
    ordonare(n,o,u,v,g);
    rucsac(n,gr,o,u,v,g);
    f.close();
    gi.close();
    return 0;
}