往模板上套
#include <iostream>
#include <cstring>
using namespace std;
const int N = 1e7 + 10, M = 20;
int f[N];
int v[M],w[M];
int m,n,d;
int main(){
scanf("%d%d%d",&m,&n,&d);
for(int i = 1; i <= d; i++){
scanf("%d%d",&v[i],&w[i]);
// cout << v[i] << w[i] << endl;
}
for(int k = 1; k <= n; k++){//每年选择的投资方案不同
for(int i = 1; i <= d; i++){
for(int j = v[i]; j <= m; j++){//因可以多次选择,所以从v[i]开始,到m
f[j] = max(f[j],f[j - v[i]] + w[i]);
}
}
// cout <<"f[" << m <<"]=" << f[m] << endl;
m = m + f[m];
memset(f,0,sizeof(f));
}
cout << m << endl;
return 0;
}