Submission #914181

#TimeUsernameProblemLanguageResultExecution timeMemory
914181mcdx9524Towers (NOI22_towers)C++17
0 / 100
1545 ms84256 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; struct Job { int deadline, duration, idx; bool operator<(Job o) const { return deadline < o.deadline; } }; vector<int> compute_schedule(vector<Job> jobs) { sort(jobs.begin(), jobs.end()); set<pair<int,int>> s; vector<int> schedule; for (int i = jobs.size()-1; i >= 0; i--) { int t = jobs[i].deadline - (i ? jobs[i-1].deadline : 0); s.insert(make_pair(jobs[i].duration, jobs[i].idx)); while (t && !s.empty()) { auto it = s.begin(); if (it->first <= t) { t -= it->first; schedule.push_back(it->second); } else { s.insert(make_pair(it->first - t, it->second)); t = 0; } s.erase(it); } } return schedule; } int main() { ios::sync_with_stdio(0); cin.tie(0); int n; cin >> n; vector <Job> jobs; for (int i = 0; i < n; i++) { int x, y; cin >> x >> y; jobs.push_back({x + y, y, i}); } vector <char> res(n, '0'); auto ans = compute_schedule(jobs); for (int x : ans) { res[x] = '1'; } for (int i = 0; i < n; i++) { cout << res[i]; } cout << '\n'; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...