http://icpc.upc.edu.cn/problem.php?id=11308
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
typedef long long ll;
ll n,m,i,j,k,l,f,x,y,dp[1000],c[1000][1000];
int main() {
scanf("%d%d",&n,&m);
for (i=1; i<=m; i++) {
scanf("%d%d",&x,&y);
for (j=1; j<=n; j++) {
f=1;
for (k=1; k<=y; k++)
f*=j;
c[i][j]=x*f;
}
}
memset(dp,0x3f,sizeof(dp));
dp[0]=0;
for (i=1; i<=m; i++) {
for (j=n; j>=0; j--)
for (k=1; k<=j; k++)
dp[j]=min(dp[j],dp[j-k]+c[i][k]);
}
printf("%lld\n",dp[n]);
}