본문 바로가기

PS/boj

백준 6068 시간 관리하기

http://www.acmicpc.net/problem/6068 

 

6068번: 시간 관리하기

성실한 농부 존은 시간을 효율적으로 관리해야 한다는 걸 깨달았다. 그는 N개의 해야할 일에 (1<=N<=1000) 숫자를 매겼다. (우유를 짜고, 마굿간을 치우고, 담장을 고치는 등의) 존의 시간을 효율적

www.acmicpc.net

그리디 문제였습니다.

끝나는 시간순으로 정렬하고 두가지를 체크하면 됩니다.

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