qinyiming 2016-12-23 23:32:33
点我顶贴
收藏
删除
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
int N,m,i=0,*a,*b,k=0,min_a,max=0,num=0;
scanf("%d %d",&N,&m);
a=(int *)malloc(sizeof(int)*m);
b=(int *)malloc(sizeof(int)*m);
for(i=0;i<m;i++)scanf("%d %d",&a[i],&b[i]);
min_a=a[0];
for(i=0;i<m;i++)
{
if(a[i]<min_a)min_a=a[i];//找出最小值
}
while(1)
{
k=-1;
for(i=0;i<m;i++)
{
if(a[i]*b[i]>max && N-a[i]>=0)//找出最大值
{
max=a[i]*b[i];
k=i;//记住最大值的下标
}
}
if(k==-1)break;
N-=a[k];
a[k]=0;
num+=max;
max=0;
if(N<min_a)break;
}
printf("%d\n",num);
return 0;
}