정렬
도착한 모든 소는 이전 소의 딜레이까지 대기하였다가 검문을 거치게 된다.
즉, 이전 소의 도착 시간+딜레이 시간 과 현재 소의 도착 시간을 비교하여 더 큰 값을 현재 시간으로 반환한다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int N;
int main() {
cin >> N;
vector<pair<int,int>> v(N);
for (int i = 0; i < N; i++) {
cin >> v[i].first >> v[i].second;
}
sort(v.begin(), v.end());
int curr = v[0].first + v[0].second;
for(int i=1; i<v.size(); i++) {
curr = max(curr, v[i].first)+v[i].second;
}
cout << curr;
}