Cod sursa(job #308864)

Utilizator andrici_cezarAndrici Cezar andrici_cezar Data 28 aprilie 2009 19:31:05
Problema Energii Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 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 (b[i]>b[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;break;}
        }
    }   
g<<mins<<'\n';   
}   
g.close();   
return 0;   
}