Submission #92076

#TimeUsernameProblemLanguageResultExecution timeMemory
92076someone_aaJob Scheduling (CEOI12_jobs)C++17
90 / 100
305 ms19960 KiB
#include <bits/stdc++.h> #define ll long long #define pb push_back #define mp make_pair using namespace std; const int maxn = 100100; int n, d, m, x; int arr[maxn]; vector<int>v[maxn]; vector<int>result[maxn]; bool check(int x) { deque<pair<int,int> > dq; for(int i=1;i<=n;i++) { dq.pb(mp(i, arr[i])); int value = x; /*cout<<"Before processing: \n"; for(auto i:dq) { cout<<i.first<<" "<<i.second<<"\n"; }*/ while(value > 0 && dq.size()) { if(dq.front().first < i - d) return false; if(dq.front().second <= value) { value -= dq.front().second; dq.front().second = 0; } else { dq.front().second -= value; value = 0; } if(dq.front().second == 0) dq.pop_front(); } /*cout<<"After processing: \n"; for(auto i:dq) { cout<<i.first<<" "<<i.second<<"\n"; } cout<<"--->\n";*/ } return dq.size() == 0; } void get_result(int x) { deque<pair<int,int> > dq; for(int i=1;i<=n;i++) { dq.pb(mp(i, arr[i])); int value = x; /*cout<<"Before processing: \n"; for(auto i:dq) { cout<<i.first<<" "<<i.second<<"\n"; }*/ while(value > 0 && dq.size()) { if(dq.front().second <= value) { value -= dq.front().second; for(int j=0;j<dq.front().second;j++) { result[i].pb(v[dq.front().first].back()); v[dq.front().first].pop_back(); } dq.front().second = 0; } else { dq.front().second -= value; for(int j=0;j<value;j++) { result[i].pb(v[dq.front().first].back()); v[dq.front().first].pop_back(); } value = 0; } if(dq.front().second == 0) dq.pop_front(); } } for(int i=1;i<=n;i++) { for(int j:result[i]) cout<<j<<" "; cout<<"0\n"; } } int main() { cin>>n>>d>>m; for(int i=1;i<=m;i++) { cin>>x; arr[x]++; v[x].pb(i); } int maxv = 0; for(int i=1;i<=n;i++) { maxv = max(maxv, arr[i]); } int li = 1, ri = m; int answ = INT_MAX; while(li < ri) { int mid = (li+ri)/2; if(check(mid)) ri = mid; else li = mid + 1; } if(!check(li)) li = maxv; cout<<li<<"\n"; get_result(li); return 0; }

Compilation message (stderr)

jobs.cpp: In function 'int main()':
jobs.cpp:99:9: warning: unused variable 'answ' [-Wunused-variable]
     int answ = INT_MAX;
         ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...