http://www.acmicpc.net/problem/6068
그리디 문제였습니다.
끝나는 시간순으로 정렬하고 두가지를 체크하면 됩니다.
1.현재 위치까지 시간관리가 가능한지
2.가능하다면 현재까지 체크했을때 가능한 가장 늦게 시작할수 있는 시간은 언제인지
#include <bits/stdc++.h>
using namespace std;
void fast_io() {
cin.tie(0)->sync_with_stdio(0);
}
using namespace std;
vector<pair<int,int>> vec;
int main() {
fast_io();
int N;
int solve=1000001;
cin>>N;
for(int x=0;x<N;x++){
int ti,si;
cin>>ti>>si;
vec.push_back({si,ti});
}
sort(vec.begin(),vec.end());
int before=0;
for(int x=0;x<N;x++){
int now=before+vec[x].second;
if(vec[x].first<now) {
solve=-1;
break;
}
else solve=min(solve,vec[x].first-now);
before=now;
}
cout<<solve;
}
'PS > boj' 카테고리의 다른 글
백준 9694 무엇을 아느냐가 아니라 누구를 아느냐가 문제다 (0) | 2022.08.09 |
---|---|
백준 17492 바둑알 점프 (0) | 2022.08.08 |
백준 24678 돌 무더기 게임1 (0) | 2022.08.06 |
백준 16238 독수리 (0) | 2022.08.04 |
백준 1525 퍼즐 (0) | 2022.08.03 |