// // main.cpp // prob2_2 // // Created by Nasca Sergiu Alin on 14/05/16. // Copyright Š 2016 Nasca Sergiu Alin. All rights reserved. // #include <iostream> #include <vector> #include <utility> using namespace std; vector<long long> a,b; vector<pair<long long, pair<int, int>>> c,d; bool CMP(pair<long long, pair<int, int>> A, pair<long long, pair<int, int>> B) { return A.first < B.first; } int main(int argc, const char * argv[]) { int n; long long x, suma, maxim = -(1LL << 60); pair<int, int> pos; cin >> n; suma = 0; a.push_back(0); for(int i = 1; i <= n; ++i) { cin >> x; suma += x; a.push_back(suma); } suma = 0; b.push_back(0); for(int i = 1; i <= n; ++i) { cin >> x; suma += x; b.push_back(suma); } for(int i = 0; i < a.size(); ++i) { for(int j = i + 1; j < a.size(); ++j) { c.push_back({a[j] - a[i], {i,j}}); } } for(int i = 0; i < b.size(); ++i) { for(int j = i + 1; j < b.size(); ++j) { d.push_back({b[j] - b[i], {i,j}}); } } sort(c.begin(), c.end(), CMP); sort(d.begin(), d.end(), CMP); int startc = 0, startd = 0; while(startc < c.size() && startd < d.size()) { if(c[startc].first < d[startd].first) { startc ++; } else if(c[startc].first > d[startd].first) { startc ++; } else if(c[startc].second.second - c[startc].second.first == d[startc].second.second - d[startc].second.first) { if(startc < startd) { startc++; } else startd++; if(c[startc].second.second - c[startc].second.first > maxim) { maxim = c[startc].second.second - c[startc].second.first; pos = c[startc].second; } } } cout << pos.second - pos.first; return 0; }