Advertisement
reiziger

Untitled

Jan 21st, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.48 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. typedef long long ll;
  6. typedef long double ld;
  7. typedef pair <ll, ll> pl;
  8. typedef pair <ld, ld> pd;
  9.  
  10. #define x first
  11. #define y second
  12. #define pb push_back
  13.  
  14. const ll INF = 2 * 1e9 + 100;
  15. const ll M = 1e4 + 100;
  16. const ll N = 1e6 + 100;
  17.  
  18. ll a[N], b[N], sl1[N], sl2[N], sr1[N], sr2[N];
  19. vector <ll> n1, n2;
  20.  
  21. int main()
  22. {
  23. ios::sync_with_stdio(0);
  24. cin.tie(0);
  25. cout.tie(0);
  26.  
  27. ll n, m, ans = -INF;
  28. cin >> n;
  29.  
  30. for (ll i = 0; i < n; i++)
  31. cin >> a[i];
  32.  
  33. cin >> m;
  34. for (ll i = 0; i < m; i++)
  35. cin >> b[i];
  36.  
  37. ll cnt1 = 0, cnt2 = 0;
  38. sl1[0] = a[0];
  39.  
  40. for (ll i = 1; i < n; i++)
  41. sl1[i] = sl1[i - 1] + a[i];
  42.  
  43. sr1[n - 1] = a[n - 1];
  44. for (ll i = n - 2; i >= 0; i--)
  45. sr1[i] = sr1[i + 1] + a[i];
  46.  
  47.  
  48. for (ll i = 0; i < n; i++)
  49. {
  50. if (!a[i])
  51. n1.pb(i);
  52. cnt1 += (a[i] == 0);
  53. }
  54.  
  55. sl2[0] = b[0];
  56. for (ll i = 1; i < m; i++)
  57. sl2[i] = sl2[i - 1] + b[i];
  58.  
  59. sr2[m - 1] = b[m - 1];
  60. for (ll i = m - 2; i >= 0; i--)
  61. sr2[i] = sr2[i + 1] + b[i];
  62.  
  63.  
  64. for (ll i = 0; i < m; i++)
  65. {
  66. if (!b[i])
  67. n2.pb(i);
  68. cnt2 += (b[i] == 0);
  69. }
  70.  
  71. ans = max(ans, min(sl1[n - 1], sl2[m - 1]));
  72. ll cnt = min(cnt1, cnt2);
  73.  
  74. for (ll i = 0; i < cnt; i++)
  75. ans = max(ans, i + min(sr1[n1[i]], sr2[n2[i]]) + 1);
  76.  
  77. cout << ans << endl;
  78. return 0;
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement