Submission #1135646

#TimeUsernameProblemLanguageResultExecution timeMemory
1135646tjonacJob Scheduling (CEOI12_jobs)C++20
55 / 100
84 ms17576 KiB
#include <bits/stdc++.h> using namespace std; #define pb push_back #define ll long long #define MOD 998244353 #define mod 1000000007 #define INF 1000000000000000 #define inf 1000000000 //#define f first //#define s second bool check(int k,int d, vector<int>& jobs){ int s=0,n=jobs.size(); for(int i=1;i<n-d;i++){ s+=jobs[i]; if(s%k){ if(s/k+1>i+d) return false; } else{ if(s/k>i+d) return false; } } return true; } int bin_search(int d, vector<int>& jobs){ int l=1, r=2000000,res=-1; while(l<=r){ int mid=l+(r-l)/2; if(check(mid,d,jobs)){ res=mid; r=mid-1; } else l=mid+1; } return res; } void solve(){ int n,d,m; cin>>n>>d>>m; vector<int> jobs(n+1,0),jobssorted; vector<vector<int>> jobsindex(n+1); for(int i=0;i<m;i++){ int a; cin>>a; jobs[a]++; jobsindex[a].pb(i+1); } for(int i=1;i<=n;i++) for(auto&u:jobsindex[i]) jobssorted.pb(u); int k=bin_search(d,jobs); cout<<k<<'\n'; for(int i=0;i<n;i++){ for(int j=1;j<=k;j++){ if(i*k+j>m){ break; } cout<<jobssorted[i*k+j-1]<<' '; } cout<<"0\n"; } } int main(){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int t=1; for(int T=0;T<t;T++) solve(); }
#Verdict Execution timeMemoryGrader output
Fetching results...