#include #include #include using namespace std; struct NR { int val, i; }; bool comp(NR A, NR B) { if(A.val==B.val) return A.i vec; int s1[100005], s2[100005]; int a, b, i, n, minim, maxim; int main() { cin>>n; for(i=1; i<=n; i++) { cin>>a; s1[i]=s1[i-1]+a; } for(i=1; i<=n; i++) { cin>>b; s2[i]=s2[i-1]+b; } for(i=1; i<=n; i++) { NR x; x.val=s1[i-1]-s2[i-1]; x.i=i-1; vec.push_back(x); } sort(vec.begin(), vec.begin()+vec.size(), comp); for(i=n; i>=1; i--) { //if(s1[i]-s2[i]) int val=s1[i]-s2[i]; int st=0; int dr=vec.size()-1; minim=9999999; while(st<=dr) { int mid=(st+dr)/2; if(vec[mid].val==val) { if(vec[mid].ival) { dr=mid-1; } } if(i-minim>maxim) maxim=i-minim; } cout<