Pagini recente » Cod sursa (job #585513) | Cod sursa (job #1741852) | Istoria paginii runda/pregatire_oji_2/clasament | Monitorul de evaluare | Cod sursa (job #308858)
Cod sursa(job #308858)
#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;}
else if (s>m&&ss<=mins) {mins=ss;}
}
}
g<<mins<<'\n';
}
g.close();
return 0;
}