Cod sursa(job #154431)

Utilizator n_lichkingSentes Norbert n_lichking Data 11 martie 2008 10:35:43
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include<stdio.h>
#include<math.h>
FILE *f=fopen("energii.in","r");
FILE *fout=fopen("energii.out","w");
int g,w,e[1002],c[1002];

void cit()
{
fscanf(f,"%d%d",&g,&w);

for (register int i=1;i<=g;i++)
    fscanf(f,"%d%d",&e[i],&c[i]);
   
}
void sort() {
	int sw=0;
	while(!sw)
	{ sw=1;
	for(register int i=1; i<g;i++)
		if(c[i]-e[i]>c[i+1]-e[i+1]) 
                  {c[i]^=c[i+1];
                   c[i+1]^=c[i];
		   c[i]^=c[i+1];
		   e[i]^=e[i+1];
                   e[i+1]^=e[i];
		   e[i]^=e[i+1];
		   sw=0;
		  }

		 else if(c[i]-e[i]==c[i+1]-e[i+1])
			if(e[i]<e[i+1])
			 {c[i]^=c[i+1];
		   c[i+1]^=c[i];
		   c[i]^=c[i+1];
		   e[i]^=e[i+1];
		   e[i+1]^=e[i];
		   e[i]^=e[i+1];
		   sw=0;
                         }
}
}


void solve()
{

  int i=1;
  long cost;
cost=0;
 while(i<=g&&cost<=w)
  {cost+=c[i];
   i++;

  }

if(cost>=w)
fprintf(fout,"%ld",cost);
else fprintf(fout,"-1");
}


int main()
{
cit();
sort();
solve();


return 0;
}