Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <queue>
- #include <string>
- #include <algorithm>
- #include <vector>
- #include <cmath>
- #include <iomanip>
- #include <map>
- #include <cstring>
- #define ll long long
- #define INF 1e9
- #define MAX 300000
- #define MOD 1000000007
- #define par pair<int, int>
- #define lsb(x) (x & -x)
- #define _ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
- using namespace std;
- queue<int> fila;
- ll n, bit[1<<20], r, l, resp, min_limit, max_limit, psa[1<<20], menor;
- int main()
- {_
- cin >> n >> min_limit >> max_limit;
- for (int i = 1; i <= n; i++)
- {
- cin >> psa[i];
- psa[i] += psa[i - 1];
- }
- for (int i = 1; i <= n; i++)
- {
- cin >> bit[i];
- bit[i] += bit[i - 1];
- }
- resp = min_limit ? -INF : 0;
- r = 1;
- while (r <= n)
- {
- while (!fila.empty() && bit[r] - bit[fila.front()] >= min_limit)
- {
- if (psa[menor] >= psa[fila.front()]) menor = fila.front();
- fila.pop();
- }
- l = max(l, menor);
- while (bit[r] - bit[l] > max_limit) l++;
- if (bit[r] - bit[l] >= min_limit) resp = max(resp, psa[r] - psa[l]);
- fila.push(r++);
- }
- cout << resp << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement