hdu2111 Saving HDU (贪心)

#include <stdio.h>
#include <stdlib.h>

struct node
{
	int pi,mi;
}bao[102];

int cmp(const void *x,const void *y)
{
	return (*(struct node *)y).pi-(*(struct node *)x).pi;
}

int main()
{
	int n,v,i,sum;
	while(scanf("%d",&v)&&v)
	{
		sum=0;
		scanf("%d",&n);
		for(i=0;i<n;i++)
			scanf("%d %d",&bao[i].pi,&bao[i].mi);
		qsort(bao,n,sizeof(bao[0]),cmp);
		for (i=0;i<n;i++)
		{
			if(v-bao[i].mi>0)
			{
				sum+=bao[i].mi*bao[i].pi;
				v-=bao[i].mi;
			}
			else
			{
				sum+=v*bao[i].pi;
				break;
			}
		}
		printf("%d\n",sum);
	}
	return 0;
}

你可能感兴趣的:(贪心)