Cod sursa(job #1197665)

Utilizator breahnadavidBreahna David breahnadavid Data 13 iunie 2014 10:10:29
Problema Energii Scor 25
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include<iostream>
#include<fstream>
#define maxn 20005

using namespace std;

ifstream f("energii.in");
ofstream g("energii.out");

int i,n,maxe,a[1005];
float b[1005],j;

main()
{
f>>n>>maxe;

a[n]=b[n]=0;
for(i=0;i<n;i++)
        {
        f>>a[i]>>b[i];
        a[n]+=a[i];
        b[n]+=b[i];
        b[i]=(float)b[i]/a[i];
        }

int ok=1;
while(ok)
        {
        ok=0;
        for(i=0;i<n-1;i++)
                if(b[i]>b[i+1]||(b[i]==b[i+1]&&b[i]*a[i]>b[i+1]*a[i+1]))
                        {
                        ok=1;
                        j=b[i];
                        b[i]=b[i+1];
                        b[i+1]=j;
                        j=a[i];
                        a[i]=a[i+1];
                        a[i+1]=j;
                }
        }

for(i=n-1;i>=0;i--)
         if(a[n]-a[i]>=maxe)
                {
                a[n]-=a[i];
                b[n]-=b[i]*a[i];
                }

if(a[n]>=maxe)g<<b[n];
else g<<-1;

g.close();
return 0;
}