본문 바로가기

algorithm/Two Pointer

[C++] BOJ 10025 The Lazy Cow

문제

백준 10025 게으른 백곰

https://www.acmicpc.net/problem/10025

 

10025번: 게으른 백곰

첫 줄에 정수 N과 K가 들어온다. 둘째 줄부터 N째 줄까지, 공백을 사이에 두고 각 양동이의 얼음의 양을 나타내는 gi와 양동이의 좌표를 나타내는 xi가 주어진다.

www.acmicpc.net

코드

#include<iostream>
using namespace std;

int n,k, bucket[1000005], sum=0, ans=0;

int main() {
	cin >> n >> k;
	int a, g;
	while (n--) {
		cin >> g >> a;
		bucket[a] = g;
	}
	for (int i = 0; i <= 1000000; i++) {	
		sum += bucket[i];
		if (i >= 2 * k + 1)
			sum -= bucket[i - 2 * k - 1];
		if (sum > ans)
			ans = sum;
	}
	cout << ans;
}

풀이방법

투포인터를 이용해 (2k+1)개씩 얼음의 합을 차례대로 구하며, 각 합의 최댓값을 구한다.

고민과정

처음에 배열 크기를 잘못 선언해서 에러가 나왔다..그리고 헷갈려서 for문을 0에서 1000000이 아닌, k+1에서 1000000-k까지 돌려버렸다.

'algorithm > Two Pointer' 카테고리의 다른 글

[C++] BOJ 2559 수열  (0) 2021.05.14
[C++] BOJ 2003 수들의 합 2  (0) 2021.05.14
[C++] BOJ 11728 배열 합치기  (0) 2021.05.14