(파일 IO) : 입력 : eat.in 출력 : eat.out
시간 제한 : 1000 MS 공간 제약 : 13만1천72킬로바이트의 특정 제한
고토 ProblemSet
제목 설명
클래스 후 양 후에는 목초지에 방목해야합니다. 마을 양 이제 기능을 갖춘 시범 마을 양 검사 인, 지도자는 양 목장 마을을보고 싶었다.
마을 양 목장은 지속적으로 양을 방목의 양을 변화 한 각 목장에 배포됩니다. 지도자는 몇 연속 목초지를보고 싶어하지만, 더 이상보고 싶지 않아
양. 마을 지도자들은 더 스타일 마을 양을보고 대부분 가능한 한 여러 목초지를 방문하는 것이 좋습니다.
지금, 당신은 무엇을 일부 목초지, 마을 지도자를 방문하고의 요구 사항을 충족하기 위해 지도자들과 시장을 돕기로 결정합니다.
입력
정수 첫 번째 줄을
과
, 많은 연속 목초지 양 마을의 주뿐만 아니라 지도자들이 양의 최대 수를 확인하는 방법을 나타냅니다.
두번째 라인
정수, 두개의 정수가 하나의 공간으로 구분 내가-번째 발현 인공 지능을 i 번째 목장
방목하는 양. 에서 번호
에
.
출력
출력 라인, 두 수의 총 숫자는 공간에 의해 분리 된 구경 번호의 시작과 끝을 나타낸다. 항상 많은 수의 소규모의 숫자에서 방향을. 또한, 동일한 길이의 가능성은, 출력의 작은 수의 해답 시작점 경우. 데이터는 적어도 답이 있는지 확인하십시오.
샘플 입력
. 5 (10)
. 제 3 1 2 7
샘플 출력
(24)
데이터 범위 제한
데이터 %
;
데이터 %
;
데이터 %
.
팁
더 이상 연속의 합보다 만족시키기 위해
, 거기
및
두 가지 가능성있는 우선 출력
에
게르마늄 목장.
문제 해결 아이디어는
약간의 최적화와 결합 된 접두어하고 폭력을 수행. .
코드
#include<iostream>
#include<cstring>
#include<string>
#include<cstdio>
#include<algorithm>
#include<iomanip>
#include<cmath>
using namespace std;
long long n,t,a[100010],maxn,p,q,i;
int main(){
freopen("eat.in","r",stdin);
freopen("eat.out","w",stdout);
scanf("%d%lld",&n,&t);
for(int i=1;i<=n;i++)
{
scanf("%lld",&a[i]);
a[i]+=a[i-1];
}
i=0,maxn=0;
while(i<n-maxn)
{
i++;
for(int j=i+maxn;j<=n;j++)
{
if(a[j]-a[i-1]<=t)
{
maxn=max(maxn,j-i+1);
p=i;
q=j;
}
else
break;
}
}
printf("%d %d",p,q);
}