Advertisement
luanaamorim

Untitled

Mar 8th, 2021
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.22 KB | None | 0 0
  1. #include <iostream>
  2. #include <queue>
  3. #include <string>
  4. #include <algorithm>
  5. #include <vector>
  6. #include <cmath>
  7. #include <iomanip>
  8. #include <map>
  9. #include <cstring>
  10. #define ll long long
  11. #define INF 1e9
  12. #define MAX 300000
  13. #define MOD 1000000007
  14. #define par pair<int, int>
  15. #define lsb(x) (x & -x)
  16. #define _ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
  17.  
  18. using namespace std;
  19.  
  20. queue<int> fila;
  21. ll n, bit[1<<20], r, l, resp, min_limit, max_limit, psa[1<<20], menor;
  22.  
  23. int main()
  24. {_
  25. cin >> n >> min_limit >> max_limit;
  26. for (int i = 1; i <= n; i++)
  27. {
  28. cin >> psa[i];
  29. psa[i] += psa[i - 1];
  30. }
  31. for (int i = 1; i <= n; i++)
  32. {
  33. cin >> bit[i];
  34. bit[i] += bit[i - 1];
  35. }
  36.  
  37. resp = min_limit ? -INF : 0;
  38. r = 1;
  39.  
  40. while (r <= n)
  41. {
  42. while (!fila.empty() && bit[r] - bit[fila.front()] >= min_limit)
  43. {
  44. if (psa[menor] >= psa[fila.front()]) menor = fila.front();
  45. fila.pop();
  46. }
  47. l = max(l, menor);
  48.  
  49. while (bit[r] - bit[l] > max_limit) l++;
  50.  
  51. if (bit[r] - bit[l] >= min_limit) resp = max(resp, psa[r] - psa[l]);
  52. fila.push(r++);
  53. }
  54.  
  55. cout << resp << endl;
  56. }
  57.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement