#include #include using namespace atcoder; using namespace std; using namespace std::chrono; using ll = long long; using ull = unsigned long long; using vi = vector; using vl = vector; using vb = vector; using vd = vector; using vs = vector; using vvi = vector>; using vvl = vector>; #define ALL(x) (x).begin(), (x).end() #define coutY cout << "Yes" << endl; #define coutN cout << "No" << endl; #define arrIn(arr, start, N) for (ll i = (start); i < (N); ++i) cin >> arr[i]; #define arrOut(arr, start, N) for (ll i = (start); i < (N); ++i) { cout << arr[i]; if(i==(N)-1) cout << endl; else cout << " "; } #define UNIQUE(A) sort(ALL(A)); A.erase(unique(ALL(A)),A.end()); #define mod9 998244353 #define mod1 1000000007 const int intM=numeric_limits::max(); const ll llM=numeric_limits::max(); string ABC="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; string abc="abcdefghijklmnopqrstuvwxyz"; vi dx={0,-1,1,0}; vi dy={-1,0,0,1}; vi ddx={-1,0,1,-1,1,-1,0,1}; vi ddy={-1,-1,-1,0,0,1,1,1}; void yn(bool tf) { cout << (tf ? "Yes" : "No") << endl; } void YN(bool tf) { cout << (tf ? "YES" : "NO") << endl; } template using priority_queueR = priority_queue, greater>; //cout << fixed << setprecision(20) << void arrOut2(auto A){ for(auto x:A){ for(auto y:x){ cout << y << " "; } cout << endl; } } bool kaibun(string S){ string T=S; reverse(ALL(S)); return S==T; } int ketawa(int x){ string S=to_string(x); int sum=0; int len=S.size(); for(int i=0;in)return 0; ll bunshi=1; for(ll i=1;i<=n;i++)bunshi=(bunshi*i)%m; ll bunbo=1; for(ll i=1;i<=r;i++)bunbo=(bunbo*i)%m; for(ll i=1;i<=n-r;i++)bunbo=(bunbo*i)%m; return (bunshi*Power(bunbo,m-2,m))%m; } // auto start = high_resolution_clock::now(); // ll getTime(){ // auto end = high_resolution_clock::now(); // return duration_cast(end - start).count(); // } // bool CheckTime(auto limit,auto eps){ // return getTime()> N >> M; vl A(N+1); vl B(N+1); arrIn(A,1,N+1); arrIn(B,1,N+1); vl sa(N+1); for(int i=1;i<=N;i++)sa[i]=A[i]-B[i]; vl ruiseki(N+1,0); for(int i=1;i<=N;i++){ if(sa[i]>=0){ ruiseki[i]=ruiseki[i-1]+sa[i]; }else{ ruiseki[i]=ruiseki[i-1]; } } ll ans=0; for(int i=1;i<=N-M+1;i++){ ans=max(ans, ruiseki[i+M-1]-ruiseki[i-1]); } cout << ans << endl; return 0; }