Advertisement
Guest User

Untitled

a guest
Oct 19th, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.41 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4. typedef pair<int, int> pii;
  5.  
  6. const int MAXN = 1e5 + 7;
  7.  
  8. vector<pii> v;
  9. int dp[MAXN][8][3];
  10. int val[8];
  11. int s, t;
  12.  
  13. int solve(int on, int day, int flag, int sentido) {
  14. if (on == t) {
  15. if (!flag) return 0;
  16. return v[on].first + val[day] * v[on].second;
  17. }
  18. int &ans = dp[on][day][flag];
  19. if (~ans) return ans;
  20.  
  21. int new_pos = on + sentido;
  22. if (new_pos < 0) new_pos += 7;
  23. new_pos = new_pos % 7;
  24.  
  25. if (flag) {
  26. ans = max(v[on].first + val[day] * v[on].second, solve(new_pos, (day + 1) % 7, flag, sentido));
  27. } else {
  28. ans = solve(new_pos, (day + 1) % 7, flag, sentido);
  29. int curr = (v[on].first + val[day] * v[on].second);
  30. ans = max(ans, solve(new_pos, (day + 1) % 7, true, sentido) - curr);
  31. }
  32. return ans;
  33. }
  34.  
  35. int main() {
  36. val[0] = 0;
  37. val[1] = 1;
  38. val[2] = 2;
  39. val[3] = 3;
  40. val[4] = 2;
  41. val[5] = 1;
  42. val[6] = 0;
  43. int n;
  44. cin >> n;
  45. for (int i = 0; i < n; i++) {
  46. int x, y;
  47. cin >> x >> y;
  48. v.push_back(pii(x, y));
  49. }
  50. int q;
  51. cin >> q;
  52. while (q--) {
  53. cin >> s >> t;
  54. s--; t--;
  55. memset(dp, -1, sizeof(dp));
  56. if (s < t) {
  57. cout << solve(s, 0, 0, +1) << '\n';
  58. } else {
  59. cout << solve(s, 0, 0, -1) << '\n';
  60. }
  61. }
  62. return 0;
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement