소가 검문소에 도착하는 시간 = a[i] 와 검문에 걸리는 시간 = b[i] 가 주어질 때 모든 소가 입장할때까지 얼마나 걸리는지 출력하는 문제다.
해법
선입선출 개념이므로 도착하는 시간에 대해서 오름차순으로 정렬하고 차례대로 훑으면서
현재 시간 cur_time보다 먼저 도착하면 cur_time = cur_time + b[i]
cur_time보다 늦게 도착하면 cur_time = a[i] + b[i]
이런식으로 cur_time을 갱신하고 출력하면 된다.
#include <iostream> #include <algorithm> using namespace std; pair<int, int> a[101]; int main() { ios::sync_with_stdio(false); cin.tie(0); int n, ans = 0; cin >> n; for (int i = 0; i < n; ++i) cin >> a[i].first >> a[i].second; sort(a, a + n); ans = a[0].first + a[0].second; for (int i = 1; i < n; ++i) { if (ans <= a[i].first) ans = a[i].first + a[i].second; else ans += a[i].second; } cout << ans << '\n'; return 0; } | cs |
'BOJ' 카테고리의 다른 글
14468 소가 길을 건너간 이유 2 (0) | 2018.11.10 |
---|---|
14467 소가 길을 건너간 이유 1 (0) | 2018.11.10 |
14175 The Cow-Signal (0) | 2018.11.10 |
14174 Block Game (0) | 2018.11.10 |
14173 Square Pasture (0) | 2018.11.10 |