```cpp
#include<cstdio>
#include<cstring>
int maxx(int x,int y)
{
return x>y?x:y;
}
int main()
{
int n,m,ans=0;
int f[50000];
int w[20000],v[20000];
scanf("%d %d",&m,&n);
for(int i=1;i<=n;i++)
scanf("%d %d",&v[i],&w[i]);
memset(f,0,sizeof(f));
f[0]=1;
for(int j=1;j<=n;j++)
for(int i=m;i>=0;i--)
if(f[i]>0&&i+v[j]<=m)
{
f[i+v[j]]=maxx(f[i+v[j]],f[i]+v[j]*w[j]);
ans=maxx(f[i+v[j]],ans);
}
printf("%d\n",ans-1);
}
```
by Mark_ZZY @ 2017-05-15 13:53:12
for j:=n downto 0 do
这一句改成1 to n 试试
by 撩妹凛酱 @ 2017-05-15 18:35:58