RiseOJ는 solved.ac와 제휴 관계가 없습니다. 티어 아이콘 © solved.ac. solved.ac
포럼
R01513

합이 정확히 K인 연속 부분배열 최대 길이

Silver I 실버 I
난이도
2s
시간 제한
256MB
메모리 제한
1
맞았습니다!!
4
제출 수
25.0%
정답률
레이팅

의견: 0

설명

어느 가게의 매출 일지에는 \(N\) 일 동안의 일별 매출액이 순서대로 기록되어 있다. 모든 일별 매출액은 양의 정수이다.

사장은 합이 정확히 \(K\) 가 되는 가장 긴 연속된 기간을 찾으려 한다. 즉, 매출 배열 \(a_1, a_2, \dots, a_N\) 에서 \(a_l + a_{l+1} + \dots + a_r = K\) 를 만족하는 구간 \([l, r]\)\(r - l + 1\) 이 최대인 것을 찾아 그 길이를 출력하면 된다.

그러한 연속 부분배열이 하나도 없다면 \(0\) 을 출력한다.

예를 들어 매출이 \([1, 2, 3, 2, 1]\) 이고 \(K = 5\) 라면, 합이 \(5\)인 연속 부분배열은 \([2, 3]\)\([3, 2]\) 로 둘 다 길이가 \(2\) 이므로 답은 \(2\) 이다.

제약

\(1 \le N \le 200{,}000\)

\(1 \le K \le 10^{14}\)

\(1 \le a_i \le 10^{9}\) (모든 매출액은 양의 정수)

입력 형식

첫째 줄에 매출이 기록된 날수 \(N\) 과 목표 합 \(K\) 가 공백으로 구분되어 주어진다.

둘째 줄에 \(N\) 개의 양의 정수 \(a_1, a_2, \dots, a_N\) 이 공백으로 구분되어 주어진다.

출력 형식

합이 정확히 \(K\) 가 되는 가장 긴 연속 부분배열의 길이를 한 줄에 출력한다. 그러한 부분배열이 없으면 \(0\) 을 출력한다.

예제 1
입력
5 5
1 2 3 2 1
출력
2
설명

합이 정확히 \(5\)가 되는 연속 부분배열은 \([2,3]\)\([3,2]\) 이며 둘 다 길이가 \(2\)이다. 따라서 답은 \(2\)이다.

예제 2
입력
6 4
1 1 1 2 1 1
출력
3
설명

합이 정확히 \(4\)가 되는 연속 부분배열 중 가장 긴 것은 \([1,1,2]\)(길이 3) 또는 \([2,1,1]\)(길이 3)이다. 따라서 답은 \(3\)이다.

예제 3
입력
3 7
5 5 5
출력
0
설명

합이 정확히 \(7\)이 되는 연속 부분배열이 없으므로 답은 \(0\)이다.

문제 정보

riseoj 작성

출처 Original

평가 및 의견

합이 정확히 K인 연속 부분배열 최대 길이

개요
출제자 난이도 Silver I 실버 I 의견 0 / 50 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.

풀이 제출

합이 정확히 K인 연속 부분배열 최대 길이

게스트로 둘러보고 있습니다. 로그인하면 풀이를 제출하고 진행 상황을 확인할 수 있습니다. 로그인하고 제출하기
공개
C++20 Tab 들여쓰기 · Ctrl+/ 주석 토글 · Enter 자동 들여쓰기
1 1 1 0 공백: 4 · UTF-8