Cod sursa(job #314822)

Utilizator RoswenRus Alexandru Roswen Data 13 mai 2009 09:49:29
Problema Energii Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include<stdio.h>
float e[5001];
int gen[5001][2];
int poz[5001],consum,g,w,h,sw,i;
int main()
{
 freopen("energii.in","r",stdin);
 freopen("energii.out","w",stdout);
 scanf("%d%d", &g, &w);
 for(i=1;i<g+1;++i)
	{ scanf("%d%d", &gen[i][0], &gen[i][1]);
	  e[i]=(float)gen[i][0]/gen[i][1];
	  poz[i]=i;
	}

 h=g;
 while(h>1)
 { h/=2;
   do{
	sw=1;
	for(i=1;i<g-h+1;++i)
	   if(e[i]<e[i+h])
		  { sw=0;
			float aux=e[i];
			e[i]=e[i+h];
			e[i+h]=aux;
			poz[i]=poz[i]^poz[i+h];
			poz[i+h]=poz[i]^poz[i+h];
			poz[i]=poz[i]^poz[i+h];
		  }
	} while(!sw);
 }
 int k=1;
 while(w>0)
 { w-=gen[poz[k]][0];
   consum+=gen[poz[k]][1];
   k++;
 }
 printf("%d", consum);
 return 0;
}