Cod sursa(job #308856)

Utilizator andrici_cezarAndrici Cezar andrici_cezar Data 28 aprilie 2009 19:24:16
Problema Energii Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include<fstream.h>
#include<values.h>

long i,a[1002],b[1002],aux,min,gata,inj,mins,sx,sy,s,m,ss,j,n;

int main()
{
ifstream f("energii.in");
ofstream g("energii.out");
f>>n>>m;
min=MAXLONG;
mins=MAXLONG;
for (i=1;i<=n;i++)
    {
    f>>a[i]>>b[i];
    sx+=a[i];sy+=b[i];
    }
if (sx<m) g<<-1<<'\n';
else if (sx==m) g<<sy<<'\n';
else {
inj=n;   
while (inj>1){   
inj/=2;   
do{   
gata=1;   
for (i=1;i<=n-inj;i++)   
    if (a[i]<a[i+inj]){
       aux=a[i];   
       a[i]=a[i+inj];   
       a[i+inj]=aux;   
       aux=b[i];   
       b[i]=b[i+inj];   
       b[i+inj]=aux;   
       gata=0;   
       }   
       }   
       while(!gata);   
}   
for (i=1;i<=n;i++)
    {
    s=0;ss=0;
    for (j=i;j<=n;j++)
        {
        s+=a[j];ss+=b[j];
        if (s==m && ss<=mins) { mins=ss;}
        else if (s>m&&ss<=mins) {mins=ss;}
        }
    }
g<<mins<<'\n';
}
g.close();
return 0;
}