2118 - 두 개의 탑
2025. 2. 17. 15:52ㆍPS/백준
문제
https://www.acmicpc.net/problem/2118
느낀점
투 포인터를 응용하는 문제였는데, 괜히 정렬하면서 문제 마음대로 해석했다가 틀렸다.. 문제를 똑바로 읽자..
풀이
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
#define pii pair<int, int>
int main()
{
int N;
cin >> N;
vector<pii> distance;
distance.push_back(make_pair(0, 0));
long long totalDistance = 0;
for (int i = 0; i < N; i++)
{
int temp;
cin >> temp;
totalDistance += temp;
distance.push_back(make_pair(i + 1, temp));
}
int left = 0;
long long answer = 0;
long long base = distance[left].second;
for (int right = 1; right < N + 1; right++)
{
base += distance[right].second;
long long comp = totalDistance - base;
answer = max(answer, min(base, comp));
if (base < comp)
{
continue;
}
else
{
while (true)
{
base -= distance[left++].second;
long long comp = totalDistance - base;
answer = max(answer, min(base, comp));
if (base < comp)
{
break;
}
}
}
}
cout << answer;
// 0 1 2 3 4 5
// 1 14 / 3 12 / 5 10 / 6 9 / 10 5 / 9 6 / 7 8 / 12 3 / 9 6
// 5 10 15
// 5 25 / 10 20 / 15 15
return 0;
}
'PS > 백준' 카테고리의 다른 글
2467 - 용액 (0) | 2025.02.18 |
---|---|
2230 - 수 고르기 (0) | 2025.02.17 |
1484 - 다이어트 (0) | 2025.02.17 |
25916 - 싫은데요 (0) | 2025.02.17 |
20922 - 겹치는 건 싫어 (0) | 2025.02.17 |