Advertisement
Korotkodul

C. Пара последовательностей с одинаковой суммой

Apr 19th, 2025 (edited)
426
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.88 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <map>
  4. using namespace std;
  5.  
  6.  
  7. int main() {
  8.     int n; cin >> n;
  9.     vector <int> a(n), b(n), pfa(n), pfb(n);
  10.     for (int &el: a) cin >> el;
  11.     pfa[0] = a[0];
  12.     for (int i = 1; i < n; ++i) {
  13.         pfa[i] = pfa[i - 1] + a[i];
  14.     }
  15.     for (int &el: b) cin >> el;
  16.     pfb[0] = b[0];
  17.     for (int i = 1; i < n; ++i) {
  18.         pfb[i] = pfb[i - 1] + b[i];
  19.     }
  20.     if (pfa[n - 1] == pfb[n - 1]) {
  21.         cout << n << "\n";
  22.         exit(0);
  23.     }
  24.     vector <int> dif(n);
  25.     for (int i = 0; i < n; ++i) {
  26.         dif[i] = pfa[i] - pfb[i];
  27.     }
  28.     map <int, int> met;
  29.     met[0] = -1;
  30.     int ans = 0;
  31.     for (int i = 0; i < n; ++i) {
  32.         if (met.find(dif[i]) != met.end()) {
  33.             ans = max(ans, i - met[i] + 1);
  34.         } else {
  35.             met[dif[i]] = i;
  36.         }
  37.     }
  38.     cout << ans << "\n";
  39. }
  40.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement