http://icpc.upc.edu.cn/problem.php?cid=1406&pid=13
#include<cstdio>
#include<iostream>
using namespace std;
int w[50],v[50],dp[50005];
int n,m,i,j;
int main()
{
scanf("%d %d",&m,&n);
for(i=1;i<=n;i++)
scanf("%d%d",&w[i],&v[i]);
for(i=1;i<=n;i++)
for(j=m;j>=w[i];j--)
dp[j]=max(dp[j],dp[j-w[i]]+w[i]*v[i]);
printf("%d",dp[m]);
}