#include using namespace std; char s1[100002],s2[100002],t1[100002],t2[100002]; /* vector > tab1;//index,sum vector > tab2;*/ int ca1[100002],ca0[100002],cb1[100002],cb0[100002],inda[100002],indb[100002]; void clear() { memset(ca1,0,sizeof(ca1)); memset(ca0,0,sizeof(ca1)); memset(cb1,0,sizeof(ca1)); memset(cb0,0,sizeof(ca1)); memset(inda,0,sizeof(ca1)); memset(indb,0,sizeof(ca1)); } void solve() { int n,i; int sa1,sa0,sb1,sb0; int use1,use0; int pa=0,pb=0; int ans = 0; int suba=0,subb=0; int L; cin>>n; cin>>s1; cin>>s2; cin>>t1; cin>>t2; sa1=sa0=sb1=sb0=0; for(i=0;i cb1[pb]) { //cb0[pb] -= use1 - cb1[pb]; cb0[pb] -= L - cb1[pb]; cb1[pb] = 0; } else if(use0 > cb0[pb]) { cb1[pb] -= L - cb0[pb]; cb0[pb] = 0; } else { cb1[pb] -= use1; cb0[pb] -= use0; } pa++; } else if(inda[pa] > indb[pb]) { L = cb1[pb] + cb0[pb]+1; use1 = cb1[pb] + s2[indb[pb]] - '0'; use0 = L - use1; ans += min(use1,ca1[pa]) + min(use0,ca0[pa]); //cout< ca1[pa]) { ca0[pa] -= L - ca1[pa]; ca1[pa] = 0; } else if(use0 > ca0[pa]) { ca1[pa] -= L - ca0[pa]; ca0[pa] = 0; } else { ca1[pa] -= use1; ca0[pa] -= use0; } pb++; } else { L = cb1[pb] + cb0[pb]; use1 = cb1[pb]; use0 = L - use1; ans += min(use1,ca1[pa]) + min(use0,ca0[pa]); //cout<>T; while(T--) { //if(T==6) break; //clear(); solve(); } fclose(stdin); fclose(stdout); return 0; }