听灌佬多
  • 板块灌水区
  • 楼主_is_laofang_
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/11/23 21:43
  • 上次更新2024/11/24 07:42:58
查看原帖
听灌佬多
1059639
_is_laofang_楼主2024/11/23 21:43

站外题(也就是CF2028C弱化版(只有一组数据))求助!

蒟蒻50个点竟只对了17个!!!

救命!!!

#include<bits/stdc++.h>
using namespace std;
int n,m,v,a[200005],pre[200005],suf[200005];
long long sum[200005];
int main(){
	cin>>n>>m>>v;
	for(int i=1;i<=n;i++)cin>>a[i];
	long long s=0;
	for(int i=1;i<=n;i++){
		s+=a[i];
		if(s>=v){
			pre[i]=pre[i-1]+1;
			s=0;
		}else{
			pre[i]=pre[i-1];
		}
	}
	s=0;
	for(int i=n;i>=1;i--){
		s+=a[i];
		if(s>=v){
			suf[i]=suf[i-1]+1;
			s=0;
		}else{
			suf[i]=suf[i-1];
		}
	}
	for(int i=1;i<=n;i++)sum[i]=sum[i-1]+a[i];
	long long ans=-1;
	for(int i=1;i<=n;i++){
		if(pre[i]+suf[i+1]>=m){
			int l=0,r=i;
			while(l<=r){
				int md=(l+r)/2;
				if(pre[md]+suf[i+1]<m)l=md+1;
				else r=md-1;
			}
			ans=max(ans,sum[i]-sum[l]);
		}
	}
	cout<<ans;
	return 0;
}
2024/11/23 21:43
加载中...