Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Rofyda Mohamed Hamed Hamed Elghadban*/
- //#include <bits/stdc++.h>
- #include <iostream>
- #include <iomanip>
- #include <cmath>
- #include <algorithm>
- #include <cstdlib>
- #include <limits.h>
- #include <string>
- #include <vector>
- #include <map>
- #include <stack>
- #include <set>
- #include <deque>
- #include <fstream>
- #include <bitset>
- #include <cmath>
- #include <numeric>
- #include <cstring>
- #include <utility>
- #include <queue>
- /***********************************************************************************/
- #define ll long long
- #define ull unsigned long long
- #define pi 3.141592654
- #define NUM 1e18
- #define Mod 1'000'000'007
- #define fixed(n) fixed<<setprecision(n)
- #define cin(v) for(auto &i:v) cin >> i ;
- #define cout(v) for(auto &i:v) cout << i <<" ";
- #define Ceil(a,b) ((a/b)+(a%b ? 1 : 0))
- #define vowel(x) (x=='e'||x=='a'||x=='i'||x=='o'||x=='u')
- #define small(x) (x>=97&&x<=122)
- #define capital(x) (x>=65&&x<=90)
- #define Tolower(s) transform(s.begin(),s.end(),s.begin(),::tolower);
- #define Toupper(s) transform(s.begin(),s.end(),s.begin(),::toupper);
- #define all(v) ((v).begin()), ((v).end())
- #define allr(v) ((v).rbegin()), ((v).rend())
- #define updmax(a,b) a=max(a,b)
- #define updmin(a,b) a=min(a,b)
- #define ceil(a,b) ((a/b)+(a%b?1:0))
- /* asc -> 1 2 3 ,des -> 3 2 1 */
- /***********************************************************************************/
- using namespace std;
- void Rofyda_Elghadban(){
- #ifndef ONLINE_JUDGE
- freopen("input.txt", "r", stdin), freopen("output.txt", "w", stdout);
- #endif
- ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
- }
- void solve(){
- }
- int main(){
- Rofyda_Elghadban();
- //freopen("input.txt","r",stdin);
- //freopen("output.txt","r",stdout);
- //solve();
- // int n;
- // cin>>n;
- // vector<int>v(n+1);
- // v[0]=0;
- // for(int i=1;i<n+1;i++){
- // cin>>v[i];
- // }
- // ll prefix1[n+2]{},prefix2[n+2]{};
- // for(int i=1;i<v.size()+1;i++){
- // prefix1[i]=v[i]+prefix1[i-1];
- // }
- // sort(all(v));
- // for(int i=1;i<v.size()+1;i++){
- // prefix2[i]=v[i]+prefix2[i-1];
- // }
- // int q;
- // cin>>q;
- // while(q--){
- // int t,l,r;
- // cin>>t>>l>>r;
- // if(t==1){
- // cout<<prefix1[r]-prefix1[l-1]<<"\n";
- // }else if(t==2){
- // cout<<prefix2[r]-prefix2[l-1]<<"\n";
- // }
- // }
- // ll n,k,prefix[100001]{},prefix1[100001]{};
- // cin>>n>>k;
- // vector<ll>v1(n+1),v2(n+1),ans;
- // v1[0]=0,v2[0]=0;
- // for(ll i=1;i<n+1;i++){
- // cin>>v1[i];
- // }
- // for(ll i=1;i<n+1;i++){
- // cin>>v2[i];
- // }
- // for(ll i=1;i<n+1;i++){
- // prefix[i]=v1[i]+prefix[i-1];
- // ans.push_back(prefix[i]);
- // }
- // ll l=1,r=l+k-1,maxi=INT_MIN,idx=0,counter=0,p1=l,p2=r,counter1=0,maxiii=INT_MIN;
- // for(ll i=1;i<v1.size()-k+1;i++){
- // if(v2[i]==0){
- // counter++;
- // if(maxi<=prefix[r]-prefix[l-1]){
- // maxi=max(maxi,prefix[r]-prefix[l-1]);
- // idx=i;
- // for(ll i=0;i<idx;i++){
- // if(v2[i]==1){
- // maxi=maxi+v1[i];
- // }
- // }
- // }
- // }
- // // else{
- // // counter1++;
- // // }
- // l++;
- // r++;
- // }
- // //if(counter>0&&counter!=n){
- // cout<<maxi<<"\n";
- // //}else if(counter1==n){
- // // if(k==1){
- // // sort(allr(ans));
- // // cout<<ans[0]<<"\n";
- // // }else{
- // // cout<<prefix[p2]-prefix[p1]<<"\n";
- // // }
- // //cout<<ans[n-1]<<"\n";
- // //}
- // // else{
- // // sort(allr(v1));
- // // for(ll i=p1;i<=p2;i++){
- // // // if(maxiii<=prefix[p2]-prefix[p1-1]){
- // // // maxiii=max(maxiii,prefix[p2]-prefix[p1-1]);
- // // // }
- // // prefix1[i]=v1[i]+prefix1[i-1];
- // // // p1++;
- // // // p2++;
- // // }cout<<prefix1[k-1]<<"\n";
- // // }
- // int n,k;
- // cin>>n>>k;
- // vector<int>v1(n+1),v2(n+1),ans;
- // v1[0]=0,v2[0]=0;
- // for(int i=1;i<n+1;i++){
- // cin>>v1[i];
- // }
- // for(int i=1;i<n+1;i++){
- // cin>>v2[i];
- // }
- // int l=1,r=l+k-1,prefix1[100001]{},maxi=INT_MIN,counter=0,prefix2[100001]{},idx=0;
- // for(ll i=1;i<n+1;i++){
- // prefix2[i]=v1[i]+prefix2[i-1];
- // ans.push_back(prefix2[i]);
- // }
- // for(int i=1;i<v1.size()-k+1;i++){
- // prefix2[i]=prefix2[i-1]+v1[i];
- // // if(v2[i]==0){
- // // counter++;
- // //for(int j=l;j<=r;j++){
- // if(maxi<=prefix1[r]-prefix1[l-1]){
- // maxi=max(maxi,prefix1[r]-prefix1[l-1]);
- // idx=i;
- // for(ll i=0;i<idx;i++){
- // if(v2[i]==1){
- // maxi=maxi+v1[i];
- // }
- // }
- // }
- // //}
- // //}
- // l++;
- // r++;
- // }
- // if(counter>0){
- // cout<<maxi<<"\n";
- // }else{
- // cout<<prefix2[n-1]<<"\n";
- // }
- int n,k;
- cin>>n>>k;
- vector<int>v1(n+1),v2(n+1),ans;
- v1[0]=0,v2[0]=0;
- for(int i=1;i<n+1;i++){
- cin>>v1[i];
- }
- for(int i=1;i<n+1;i++){
- cin>>v2[i];
- }
- int l=1,r=l+k-1,prefix1[n+2]{},sum=0,maxi=INT_MIN,idx1=0,idx2=0;
- for(int i=1;i<n+1;i++){
- prefix1[i]=v1[i]+prefix1[i-1];
- }
- for(int i=1;i<n+1;i++){
- if(prefix1[r]-prefix1[l-1]>=maxi){
- maxi=max(maxi,prefix1[r]-prefix1[l-1]);
- idx1=i;
- idx2=i+k-1;
- }
- l++;
- r++;
- }
- //cout<<idx1<<" "<<idx2<<"\n";
- for(int i=1;i<n+1;i++){
- if(v2[i]==1){
- sum+=v1[i];
- if(i>=idx1&&i<=idx2){
- sum-=v1[i];
- }
- }
- }
- //cout<<sum<<"\n";
- cout<<maxi+sum<<"\n";
- return 0;
- }
- /*
- * * * * * * * * * * * * * * * * * * * * * * * * * *
- * * * * * * *
- * * * * * * *
- * * * * * * *
- * * * * * * * * * * * * * * * * * * * * * * * * * *
- * * * * * *
- * * * * * *
- * * * * * *
- * * * * * *
- * * * * * *
- * * * * * *
- * * * * * * * * * * * * * * * * * * *
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement