求助
查看原帖
求助
562891
BEST_CAT楼主2023/2/28 20:12

洛谷UKE。

CF显示:

Time limit exceeded on test 3

那个大佬能帮一下呀。

#include<bits/stdc++.h>
using namespace std;
const int arr=1e5+5;
int a[arr],t[arr],n,m;
int main(){
	cin>>n>>m;
	int ans=0;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	for(int i=1;i<=n;i++){
		cin>>t[i];
		if(t[i]){
			ans+=a[i];
		}
	}
	int sum=0,l=1,r=1,mx=-1;
	if(t[1]==0){
		sum+=a[1];
	}
	while(l<=r&&r<n){
		while(r<=n&&r-l+1<m){
			r++;
			if(t[r]==0){
				sum+=a[r];
			}
		}
		while(l<r&&r-l+1==m){
			if(sum>mx){
				mx=sum;
			}
			if(t[l]==0){
				sum-=a[l];
			}
			l++;
		}
	}
	cout<<ans+mx;
	return 0;
} 
2023/2/28 20:12
加载中...