Submission #1073244

#TimeUsernameProblemLanguageResultExecution timeMemory
1073244Glitch00Job Scheduling (CEOI12_jobs)C++17
90 / 100
294 ms20816 KiB
#include <bits/stdc++.h> #define int long long #define ll long long using namespace std; int dx[8] = {1, 0, -1, 0, -1, 1, -1, 1}; int dy[8] = {0, 1, 0, -1, -1, 1, 1, -1}; int n,d,m; vector<pair<int,int>>v; bool can(int md){ int cnt = 0; int day = 1; bool ok = 1; for(int i=0 ; i<m ; i++){ if(day<v[i].first)day = v[i].first; if(day-v[i].first>d){ ok = 0; break; } cnt++; if(cnt==md)day++,cnt=0; } if(!ok)return ok; if(day<=n || (day==n+1 && cnt==0))return 1; return 0; } void solve() { cin>>n>>d>>m; v = vector<pair<int,int>>(m); for(int i=0 ; i<m ; i++){ cin>>v[i].first; v[i].second=i+1; } std::sort(v.begin(), v.end()); int l =1 , r=1e9; int best = -1; while(l<=r){ int md = (l+r)>>1; if(can(md)){ best = md; r = md - 1; }else l = md + 1; } int j = 0; cout<<best<<endl; for(int i=0 ; i<n ; i++){ for(int w = j ; w<min(j+best,m) ; w++){ cout<<v[w].second<<" "; } cout<<0<<endl; j+=best; } } int32_t main() { ios_base::sync_with_stdio(false), cout.tie(nullptr), cin.tie(nullptr); int t = 1; // cin >> t; while (t--) { solve(); cout << endl; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...