#include #define MAXN 1010 using namespace std; int n,m; long long int dp[MAXN][11]={0}; long long int num[MAXN][11]={0}; int spend[MAXN],hit[MAXN]; long long int ans=0; int best[MAXN]; struct SKILL { int hit; int spend; }a[MAXN]; int main() { while(scanf("%d%d",&n,&m)!=EOF) { ans=0; memset(num,0,sizeof(num)); memset(dp,0,sizeof(dp)); memset(best,0,sizeof(best)); int max_hit=0,max_def=0,max_hp=0;int lx,ly; for(int i=0;imax_hit) { max_hit=a[l_num].hit; } l_num++; } m=l_num; if(max_hit<=max_def) { printf("-1\n"); continue; } for(int k_def=0;k_def<=10;k_def++) { if(k_def!=0) for(int i=0;ia[j].spend) { t=a[j].spend; } continue; } if(t==-1||t>dp[i-a[j].hit][k_def]+a[j].spend) { t=dp[i-a[j].hit][k_def]+a[j].spend; } } dp[i][k_def]=t; } } for(int i=0;i<=max_hp;i++) { for(int j=0;j<=10;j++) { ans+=(dp[i][j]*num[i][j]); } } printf("%I64d\n",ans); } }