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