# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
684979 | nikhil_kumart21 | Job Scheduling (CEOI12_jobs) | C++17 | 164 ms | 29624 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
typedef int ll;
#define endl "\n";
void setIO(string s) {
freopen((s + ".in").c_str(), "r", stdin);
freopen((s + ".out").c_str(), "w", stdout);
}
vector<vector<ll>>v;
vector<ll>row;
vector<vector<ll>>A,M;
ll fun(ll a[],ll n,ll mid,ll d,ll done){
deque<ll>dq;
v.clear();
for(ll i=1;i<=n;++i){
if(dq.size()>d)return 0;
ll x=mid;
row.clear();
dq.push_back(a[i]);
while(!dq.empty()){
if(dq.front()<=x){
x-=dq.front();
if(dq.front()!=0&&done){
for(ll j=0;j<dq.front();++j){
row.push_back(i-dq.size()+1);
}
}
dq.pop_front();
}
else{
dq.front()-=x;
if(x!=0&&done){
for(ll j=0;j<x;++j){
row.push_back(i-dq.size()+1);
}
}
break;
}
}
if(!row.empty()&&done)v.push_back(row);
}
return dq.size()<=d;
}
int main()
{
// setIO("angry");
ios_base::sync_with_stdio(false);
cin.tie(NULL);cout.tie(NULL);
ll n,d,m;
cin>>n>>d>>m;
ll a[n+1];
memset(a,0,sizeof(a));
M=vector<vector<ll>>(n+1);
for(ll i=0;i<m;++i){
ll x;
cin>>x;
M[x].push_back(i+1);
a[x]++;
}
ll l=1,r=m,mid,ans=1e15;
while(l<=r){
mid=l+(r-l)/2;
if(fun(a,n,mid,d,0)){
ans=mid;
r=mid-1;
}
else{
l=mid+1;
}
}
fun(a,n,ans,d,1);
A=v;
for(ll i=0;i<A.size();++i){
for(ll j=0;j<A[i].size();++j){
ll x=A[i][j];
A[i][j]=M[x].back();
M[x].pop_back();
}
A[i].push_back(0);
}
while(A.size()<n){
A.push_back({0});
}
cout<<ans<<endl;
for(ll i=0;i<n;++i){
auto it=A[i];
for(auto it2:it){
cout<<it2;
if(it2!=0)
cout<<" ";
}
if(i!=n-1)
cout<<endl;
}
// for(auto it:M){
// for(auto it2:it){
// cout<<it2<<" ";
// }
// cout<<endl;
// }
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |