Insyder01

Untitled

Apr 15th, 2017
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.66 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define L(i, m, n) for(int i(m);i < n;i++)
  3. #define pb push_back
  4. #define D(X) cout<<"  "<<#X": "<<X<<endl;
  5. #define in(x) cin >> x
  6. #define SZ(X) int(X.size())
  7. #define clr(A, V) L(i, 0, 111) A[i]=V
  8. #define ff first
  9. #define ss second
  10. #define RF(X) freopen(X, "r", stdin)
  11. #define WF(X) freopen(X, "w", stdout)
  12. using namespace std;
  13. typedef long long ll;
  14. typedef pair<ll,ll> pll;
  15. typedef vector<int> vi;
  16. typedef vector<vi> vii;
  17. typedef pair<int,int> pii;
  18. typedef vector<pii> vpii;
  19. typedef pair<int, string> pis;
  20. typedef vector<string> vs;
  21. typedef pair<pair<int, int>, pair<int, int > > piiii;
  22.  
  23. int table[109][10009], price[109], favour[109];
  24. void init(){
  25.     memset(table, 0, sizeof(table));
  26.     memset(price, 0, sizeof(price));
  27.     memset(favour, 0, sizeof(favour));
  28. }
  29. int main(){
  30. //    WF("out.txt");
  31.     int cnt=0;
  32.     int m, n;
  33.     while(scanf("%d%d", &m, &n)==2){
  34.         init();
  35.         m+=200;
  36.  
  37.         L(i,1,n+1)in(price[i]), in(favour[i]);
  38.  
  39.         for(int i=0;i<=n;i++) table[i][0]=0; for(int j=0;j<=m;j++)if(j>=price[0])table[0][j]=favour[0];/**Base**/
  40.  
  41.         for(int i = 1;i<=n;i++){
  42.             for(int j = 1;j<=m;j++){
  43.                 table[i][j]=table[i-1][j];
  44.                 if(j>= price[i])
  45.                     table[i][j]=max(table[i][j], favour[i]+table[i-1][j-price[i]]);
  46.             }
  47.         }
  48.         int cost =0, x=n, y=m;
  49.         while(x>0&&y>0){
  50.             if(table[x][y]!=table[x-1][y])
  51.                 cost+=price[x], y-=price[x];
  52.             x--;
  53.         }
  54.         if(cost>2000)
  55.             cout << table[n][m] <<endl;
  56.         else
  57.             cout << table[n][m-200]<<endl;
  58.  
  59.     }
  60.  
  61.  
  62. }
Advertisement
Add Comment
Please, Sign In to add comment