30分求助
查看原帖
30分求助
890321
mooktian楼主2023/3/19 19:51
#include <bits/stdc++.h>
#define f(i,a,b) for(int i=a;i<=b;i++)
#define g(i,a,b) for(int i=a;i>=b;i--)
int n,m,l,r;
long long a[4000001],sum[4000001],maxn; 
using namespace std;
int main(){
	cin>>n>>m;
	f(i,1,n) {
		scanf("%lld",&a[i]);
		sum[i]=sum[i-1]+a[i];
	}
	int i=1,j=1;
	while(j<=n) {
		if(sum[j]-sum[i-1]>m) i++;
		else {
			if(sum[j]-sum[i-1]==m) {
				r=j,l=i;
				break;
			}else {
				if(maxn<sum[j]-sum[i-1]&&maxn<m) {
					r=j,l=i,maxn=sum[j]-sum[i-1];
				}
				j++;
			}
		}
	}
	printf("%d %d %lld",l,r,maxn);
    return 0;
}
2023/3/19 19:51
加载中...