Cod sursa(job #1000966)

Utilizator gigiibirjoBirjovanu Georgiana gigiibirjo Data 24 septembrie 2013 08:42:46
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <iostream>
#include<fstream>
using namespace std;
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");
int n, G;
struct
{
    int w,p;
}v[5000],aux;
void citire()
{
    int i;
    fin>>n>>G;
    for(i=1; i<=n; i++)
        fin>>v[i].w>>v[i].p;
    fin.close();
}
void ordo()
{
    int i, ok;
    do
    {
        ok=0;
        for(i=1; i<=n-1; i++)
            if((float)(v[i].p/v[i].w)>(float)(v[i+1].p/v[i+1].w))
            {
                aux=v[i];
                v[i]=v[i+1];
                v[i+1]=aux;
                ok=1;
            }
    }
    while(ok);
}
void Greedy()
{
    int i,S=0;
    ordo();
    for(i=1; i<=n&&G>0; i++)
        if(v[i].w<=G)
        {
            G=G-v[i].w;
            S=S+v[i].p;
        }
    fout<<S;
    fout.close();
}
int main()
{
    citire();
    Greedy();
    return 0;
}