BOJ 1263 - 시간 관리

image.png

제일 마감기한이 늦는 일부터 그리디하게 채워주면 된다.

오랜만에 본 골드웰노운 문제

void solve() {
   int n;
   cin >> n;
   vector<pi> a(n);
   for (auto &[t, s]: a) cin >> t >> s;
   sort(all(a), [&](auto &a, auto &b) {
      return a.se < b.se;
   });

   int ans = 1e9;
   for (int s = 1000000, i = n - 1; s >= 0; s--) {
      while (i >= 0 && a[i].se == s) {
         ans = min(ans - a[i].fi, s - a[i].fi);
         i--;
      }
   }
   if (ans < 0) cout << -1;
   else cout << ans;
}

Tags:

Categories:

Updated:

Comments