Submission #856242

#TimeUsernameProblemLanguageResultExecution timeMemory
856242vjudge1Job Scheduling (CEOI12_jobs)C++17
15 / 100
1064 ms65536 KiB
#include<bits/stdc++.h> using namespace std; int main() { // setIO("milkvisits"); int t = 1; // cin >> t; while(t --) { int n, d, m; cin >> n >> d >> m; multiset<int> st, st2; map<int, int> mp, mp2; map<int, set<int>> pos; for(int i = 0, x; i < m; i ++) { cin >> x; pos[x].insert(i); mp2[x] ++; st.insert(x); } int l = 1, r = n; while(l <= r) { int mid = l + r >> 1; mp = mp2; for(int i = 1; i <= n && !mp.empty(); i ++) { int sum = mid; while(!mp.empty() && mp.begin()->first <= i && sum) { int x = mp.begin()->first; int y = mp.begin()->second; int dd = min(sum, y); sum -= dd; if(dd == y) mp.erase(x); else mp[x] -= dd; } } if(mp.empty()) r = mid - 1; else l = mid + 1; } mp = mp2; cout << l << '\n'; // for(auto x : pos) { // cerr << x.first << " : "; // for(auto y : x.second) cerr << y << ' '; // cerr << '\n'; // } for(int i = 1; i <= n; i ++) { int sum = l; while(!mp.empty() && mp.begin()->first <= i && sum) { int x = mp.begin()->first; int y = mp.begin()->second; int dd = min(sum, y); sum -= dd; if(dd == y) mp.erase(x); else mp[x] -= dd; while(dd --) { cout << 1 + *pos[x].begin() << ' '; pos[x].erase(*pos[x].begin()); } } cout << "0\n"; } } return 0; }

Compilation message (stderr)

jobs.cpp: In function 'int main()':
jobs.cpp:22:24: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   22 |            int mid = l + r >> 1;
      |                      ~~^~~
#Verdict Execution timeMemoryGrader output
Fetching results...