Cod sursa(job #406847)

Utilizator tudgal1001Profir Tudor tudgal1001 Data 1 martie 2010 20:51:12
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include<stdio.h>
using namespace std;

int c[10001],e[10001];
/*void quick(int st,int dr)
{
	int m,i,j,aux;
	m=(st+dr)/2;
	i=st; j=dr;
	while (e[i]>e[m])
		i++;
	while (e[m]>e[j])
		j--;
	if (i<=j && e[i]==e[j] && c[i]>c[j])
	{
		aux=c[i];
		c[i]=c[j];
		c[j]=aux;
		i++;
		j--;
	}
	else if (i<=j)
	{
		aux=e[i];
		e[i]=e[j];
		e[j]=aux;
		aux=c[i];
		c[i]=c[j];
		c[j]=aux;
		i++;
		j--;
	}
	if (st<j)
		quick(st,j);
	if (i<dr)
		quick(i,dr);
}*/
int main ()
{
	int i,w,n,aux,j,tot,cost;
	freopen("energii.in","r",stdin);
	freopen("energii.out","w",stdout);
	scanf("%d %d",&n,&w);
	for (i=1; i<=n; i++)
		scanf("%d %d",&e[i],&c[i]);
	//quick(1,n);
	for (i=1; i<n; i++)
		for (j=i+1; j<=n; j++)
			if (e[i]<e[j])
			{
				aux=e[i];
				e[i]=e[j];
				e[j]=aux;
				aux=c[i];
				c[i]=c[j];
				c[j]=aux;
			}
			else if (e[i]==e[j] && c[i]>c[j])
			{
				aux=c[i];
				c[i]=c[j];
				c[j]=aux;
			}
	tot=0; cost=0; i=0;
	while (tot<w)
	{
		i++;
		cost+=c[i];
		tot+=e[i];
	}
	printf("%d",cost);
	return 0;
}