fork download
  1. // In the name of Allah the Lord of the Worlds.
  2.  
  3. #include<bits/stdc++.h>
  4. using namespace std;
  5.  
  6. typedef long long ll;
  7.  
  8. ll m , n;
  9.  
  10. vector<int>v1 , v2;
  11.  
  12. ll dp[10205][105][2];
  13.  
  14. ll f(int w , int i , int b)
  15. {
  16.  
  17. if(w>m+200){
  18.  
  19. return -1e9;
  20. }
  21.  
  22. if(i==n){
  23.  
  24. if(w>2000){
  25.  
  26. if(w<=m+200)return 0;
  27. }
  28.  
  29. else if(w<=m)return 0;
  30.  
  31. return -1e9;
  32. }
  33.  
  34.  
  35. ll value = 0;
  36.  
  37. value = f(w+v1[i] , i+1 , b) + v2[i];
  38.  
  39. value = max(value , f(w , i+1 , b));
  40.  
  41. return dp[w][i][b] = value;
  42. }
  43.  
  44. int main(void)
  45. {
  46. while(scanf("%lld %lld",&m , &n)==2){
  47.  
  48. v1.clear() , v2.clear();
  49.  
  50. memset(dp , -1 , sizeof(dp));
  51.  
  52. for(int i=0;i<n;i++){
  53.  
  54. int in1 , in2;
  55. scanf("%d %d",&in1,&in2);
  56. v1.push_back(in1);
  57. v2.push_back(in2);
  58. }
  59.  
  60. printf("%lld\n",f(0 , 0 , 0));
  61. }
  62. return 0;
  63. }
  64.  
Success #stdin #stdout 0s 32808KB
stdin
1981 75
3199 4
26 5
1114 1
1203 1
2341 2
2255 5
824 1
465 1
485 1
2977 2
2431 5
2197 3
1665 2
940 1
3619 2
2427 3
2269 2
1374 4
2825 2
2984 2
2558 2
2422 5
1635 1
1493 3
37 2
3918 1
2269 2
3470 4
2686 3
1281 1
2144 4
1472 2
2863 2
3794 5
1773 2
3555 4
1070 5
63 1
1213 5
1528 2
2728 1
67 5
3910 3
1632 3
649 5
898 3
2971 4
3555 1
1917 5
3871 5
3180 5
371 2
1752 5
3306 3
2340 2
917 3
2629 4
3118 1
1575 3
1484 4
13 5
1718 1
1453 1
1520 5
1676 4
3410 3
1519 1
1105 1
213 3
2939 2
1946 4
674 2
1894 4
3463 1
540 1
stdout
31