본문 바로가기
컴퓨터/Problem Solving

(BOJ, 1806) 부분합

by 빵케잌 2020. 1. 27.

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