Prefix sum 구현 시 Tip :
1~N 전역 배열로 선언하면 0자리에 0이 들어가있어서 sum[i] += sum[i-1]; 하면 됨.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int N, S, ans;
int arr[100001];
void b_search(int s, int e) {
int m, flag;
while (s<=e) {
m = (s + e) / 2;
flag = 0;
for (register int i = 0; i + m <= N; i++) {
if (arr[i + m] - arr[i] >= S) {
flag = 1;
break;
}
}
if (flag) {
ans = m;
e = m-1;
}
else {
s = m + 1;
}
}
}
int main() {
scanf("%d %d", &N, &S);
for (int i = 1; i <= N; i++) {
scanf("%d", &arr[i]);
arr[i] += arr[i - 1];
}
b_search(1, N);
printf("%d", ans);
}
'컴퓨터 > Problem Solving' 카테고리의 다른 글
(BOJ, 1525) 퍼즐 (0) | 2020.01.28 |
---|---|
(BOJ, 1062) 가르침 (0) | 2020.01.28 |
(BOJ, 5052) 전화번호 목록 (0) | 2020.01.27 |
(BOJ, 1753) 최단경로 (No Library) (0) | 2020.01.26 |
Expert 코드 (0) | 2020.01.02 |