Cod sursa(job #1049583)

Utilizator VisanCosminVisan Tudor Cosmin VisanCosmin Data 7 decembrie 2013 15:37:16
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <iostream>
#include <fstream>
#include <math.h>
#include <stdlib.h>
using namespace std;
int a[100],b[100],w,g;
void citire()
{
    int i;
    ifstream f ("energii.in");
    f>>g;
    f>>w;
    for(i=0;i<g;i++)
        {f>>a[i];
        f>>b[i];
        }

    f.close();
}
void sorteaza()
{
    int ok,i,aux;
    do{
    ok=1;
    for(i=0;i<g-1;i++)
        if(a[i]/b[i]<a[i+1]/b[i])
        if(abs(a[i]-w)>abs(a[i+1]-w))
        {
            aux=b[i];
            b[i]=b[i+1];
            b[i+1]=aux;
            aux=a[i];
            a[i]=a[i+1];
            a[i+1]=aux;
            ok=0;
        }

        }while(ok!=1);
}
int calculeaza()
{
    int f=1,i,z=0,s=0;
    for(i=0;i<g&&f;i++)
        {
        s=s+a[i];
        z=z+b[i];
        if(s>=w)
            {f=0;
            return z;}
        }
return -1;
}
int main()
{
    int z;
    citire();
    sorteaza();
    ofstream h ("energii.out");
    z=calculeaza();
    if(z==0) h<<-1;
        else h<<z;
    h.close();
    for(int i=0;i<g;i++)
        cout<<a[i]<<' ';
    return 0;
}