Advertisement
Guest User

Untitled

a guest
Oct 21st, 2019
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.08 KB | None | 0 0
  1. #include <fstream>
  2. using namespace std;
  3. // BUG
  4. ifstream in("scara1.in");
  5. ofstream out("scara1.out");
  6.  
  7. int n, water[1205], energy[1205], step[1205], pocket[1205], k;
  8.  
  9. void up(int x, int y, int c) {
  10.     if(step[x] > y || step[x] == 0) {
  11.         step[x] = y;
  12.         pocket[x] = c;
  13.     }
  14.     else if(step[x] == y)
  15.         pocket[x] = min(pocket[x], c);
  16. }
  17.  
  18. void dp() {
  19.     step[1] = 1, pocket[1] = 0;
  20.     for(int i = 1; i <= n; i++) {
  21.         up(i+1, step[i]+1, pocket[i]);
  22.         if(water[i] != 0)
  23.             for(int j = 1; j <= water[i] && i+j <= n; j++)
  24.                 up(i+j, step[i]+1, pocket[i]);
  25.        
  26.         if(energy[i] != 0)
  27.             for(int j = 1; j <= 2*energy[i] && i+j <= n; j++)
  28.                 up(i+j, step[i]+1, pocket[i] + (j-1)/2 + 1);
  29.     }
  30. }
  31.  
  32. int main() {
  33.     int x = 0;
  34.     in >> n >> k;
  35.     while(k--) {
  36.         in >> x;
  37.         in >> water[x];
  38.     }
  39.     in >> k;
  40.     while(k--) {
  41.         in >> x;
  42.         in >> energy[x];
  43.     }
  44.  
  45.     dp();
  46.  
  47.     out << step[n] << " " << pocket[n];
  48.  
  49.     in.close();
  50.     out.close();
  51.     return 0;
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement