#include <stdio.h> #include <string.h> #define max(x,y) (x>y)?x:y int main () { int T,M,a,b; scanf("%d %d",&T,&M); int i,j; int dp[M+1][T+1]; memset(dp,0,sizeof(dp)); for(i=1;i<=M;i++) { scanf("%d %d",&a,&b); for(j=1;j<=T;j++) { if(j>=a) dp[i][j]=max(dp[i-1][j],dp[i-1][j-a]+b); else dp[i][j]=dp[i-1][j]; } } printf("%d",dp[M][T]); return 0; } /************************************************************** Problem: 1778 User: admin Language: C Result: Accepted Time:11 ms Memory:1144 kb ****************************************************************/