Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- typedef long long ll;
- typedef long double ld;
- typedef pair <ll, ll> pl;
- typedef pair <ld, ld> pd;
- #define x first
- #define y second
- #define pb push_back
- const ll INF = 2 * 1e9 + 100;
- const ll M = 1e4 + 100;
- const ll N = 1e6 + 100;
- ll a[N], b[N], sl1[N], sl2[N], sr1[N], sr2[N];
- vector <ll> n1, n2;
- int main()
- {
- ios::sync_with_stdio(0);
- cin.tie(0);
- cout.tie(0);
- ll n, m, ans = -INF;
- cin >> n;
- for (ll i = 0; i < n; i++)
- cin >> a[i];
- cin >> m;
- for (ll i = 0; i < m; i++)
- cin >> b[i];
- ll cnt1 = 0, cnt2 = 0;
- sl1[0] = a[0];
- for (ll i = 1; i < n; i++)
- sl1[i] = sl1[i - 1] + a[i];
- sr1[n - 1] = a[n - 1];
- for (ll i = n - 2; i >= 0; i--)
- sr1[i] = sr1[i + 1] + a[i];
- for (ll i = 0; i < n; i++)
- {
- if (!a[i])
- n1.pb(i);
- cnt1 += (a[i] == 0);
- }
- sl2[0] = b[0];
- for (ll i = 1; i < m; i++)
- sl2[i] = sl2[i - 1] + b[i];
- sr2[m - 1] = b[m - 1];
- for (ll i = m - 2; i >= 0; i--)
- sr2[i] = sr2[i + 1] + b[i];
- for (ll i = 0; i < m; i++)
- {
- if (!b[i])
- n2.pb(i);
- cnt2 += (b[i] == 0);
- }
- ans = max(ans, min(sl1[n - 1], sl2[m - 1]));
- ll cnt = min(cnt1, cnt2);
- for (ll i = 0; i < cnt; i++)
- ans = max(ans, i + min(sr1[n1[i]], sr2[n2[i]]) + 1);
- cout << ans << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement