문제
백준 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 |