Cod sursa(job #849147)

Utilizator 10carbarbulescu alexandru 10car Data 6 ianuarie 2013 16:25:15
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.91 kb
#include <stdio.h>
#include <fstream>
#include <iostream>
using namespace std;

typedef struct genereator
{
    int cost;
    int energie_pr;
    float raport;
}
generator;
generator generatoare[1002];
int g,w;

void citire()
{
    ifstream f("energii.in");
    f>>g;
    f>>w;
    for(int i=1;i<=g;i++)
    {
        f>>generatoare[i].energie_pr;
        f>>generatoare[i].cost;
        generatoare[i].raport = generatoare[i].cost/generatoare[i].energie_pr;
    }
    f.close();
}

void scriere(int sol)
{
    ofstream g("energii.out");

    g<<sol;
    g.close();
}

/*void insert(generator x, generator v[], int nr_generatoare)
{
    int i, j;
    for(i = 1; i <= nr_generatoare; ++i)
    {
        if(x.cost > v[i].cost)
        {
            for(j = nr_generatoare + 1; j > i; --j)
            {
                v[j] = v[j - 1];
            }

            v[i] = x;
            break;
        }
    }
}*/

int main()
{
    int i, j;
    int nr_generatoare_ins = 0, sol;
    generator gen_temp;
    float suma;

    citire();

    for(i = 1; i <= g; ++i)
    {
        for(j = i + 1; j <= g; ++j)
        {
            if(generatoare[i].raport > generatoare[j].raport)
            {
                gen_temp = generatoare[i];
                generatoare[i] = generatoare[j];
                generatoare[j] = gen_temp;
            }
        }

    }
    /*for(i = 1; i <= g; ++i)
        insert(generatoare[i], v, ++nr_generatoare_ins);
        cout <<"vector ordonat: \n";
        for(i = 1; i <= g; ++i)
            cout<<" "<<generatoare[i].raport;
        cout<<"\n";

    */

    suma=0;
    for(i = 1; i <= g; ++i)
    {
        suma += generatoare[i].energie_pr;

        if(suma >= w){
            sol = generatoare[i].cost;
            break;
        }

    }

    cout<<"Solutia este: \n"<<sol;

    scriere(sol);
    return 0;
}