Submission #1300158

#TimeUsernameProblemLanguageResultExecution timeMemory
1300158hynmjJob Scheduling (CEOI12_jobs)C++20
0 / 100
469 ms46020 KiB
#include <bits/stdc++.h> #define int long long using namespace std; const long long N = 2e5 + 5; int a[N]; int n, d, m; map<int, vector<int>> fr; map<int, vector<int>> ans; int f(int k, stack<int> q) { for (int day = m; q.size() && day >= 0; day--) { for (int i = 0; i < k && q.size(); i++) { // cout << day << ' ' << q.top() << endl; if (q.top() < day - d) break; else if (q.top() >= day - d and q.top() <= day) { // ans[day].push_back(fr[q.top()].back()); // fr[q.top()].pop_back(); q.pop(); } else break; } } return q.size() == 0; } void print(int k, stack<int> q) { for (int day = m; q.size() && day >= 0; day--) { for (int i = 0; i < k && q.size(); i++) { // cout << day << ' ' << q.top() << endl; if (q.top() < day - d) break; else if (q.top() >= day - d and q.top() <= day) { ans[day].push_back(fr[q.top()].back()); fr[q.top()].pop_back(); q.pop(); } else break; } } } void solve() { cin >> n >> d >> m; int e; for (int i = 1; i <= m; i++) { cin >> e; fr[e].push_back(i); } stack<int> q; for (int i = 1; i <= n; i++) { for (auto j : fr[i]) q.push(i); } int l = 0, r = m + 1; while (r - l > 1) { int mid = (r + l) / 2; f(mid, q) ? (r = mid) : (l = mid); } print(r, q); // cout << r << endl; for (int i = 1; i <= n; i++) { for (auto j : ans[i]) { cout << j << ' '; } cout << 0 << endl; } } signed main() { // ios_base::sync_with_stdio(0); // cin.tie(NULL); // cout.tie(NULL); int t = 1; // cin >> t; for (int i = 1; i <= t; i++) { // cout << "Case #" << i << ':' << ' '; solve(); cout << endl; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...