Advertisement
vahook

Mester / "OKTV 2018/19 2. forduló" / 3. Vásár

May 3rd, 2020
487
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.13 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. #define MAXN    100
  4. #define MAXK    1000
  5.  
  6. using namespace std;
  7.  
  8. int N, K;
  9. int realcap;
  10. int tomegek[MAXN+1];
  11. int ar[MAXN+1];
  12. int realmennyi[MAXN+1];
  13. int bev;
  14.  
  15. int buffer1[MAXK+1], buffer2[MAXK+1];
  16.  
  17. int
  18. main()
  19. {
  20.     ios_base::sync_with_stdio(0);
  21.  
  22.     /* be */
  23.     cin >> N >> K;
  24.     realcap = K;
  25.     for(int i = 1; i <= N; i++) {
  26.         int c, d;
  27.         cin >> tomegek[i] >> ar[i] >> c >> d;
  28.         realcap -= tomegek[i]*d;
  29.         bev += ar[i]*d;
  30.         realmennyi[i] = c-d;
  31.     }
  32.  
  33.     if(realcap < 0) {
  34.         cout << "-1" << endl;
  35.         return 0;
  36.     }
  37.  
  38.     /* do */
  39.     int *bufferE1 = buffer1, *bufferE2 = buffer2;
  40.     for(int i = 1; i <= N; i++) {
  41.         int et = tomegek[i];
  42.         for(int l = 1; l <= realmennyi[i]; l++){
  43.             int j = 1;
  44.  
  45.             for(; j < et; j++)
  46.                 bufferE2[j] = bufferE1[j];
  47.  
  48.             for(; j <= realcap; j++)
  49.                 bufferE2[j] = max(bufferE1[j], bufferE1[j-et] + ar[i]);
  50.  
  51.             swap(bufferE1, bufferE2);
  52.         }
  53.     }
  54.  
  55.     /* ki */
  56.     cout << bufferE1[realcap]+bev << endl;
  57.  
  58.     return 0;
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement