# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
684969 | nikhil_kumart21 | Job Scheduling (CEOI12_jobs) | C++17 | 282 ms | 43916 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
typedef long long 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;
ll fun(ll a[],ll n,ll mid,ll d){
deque<ll>dq;
v.clear();
for(ll i=1;i<=n;++i){
if(dq.size()>d)return 0;
ll x=mid;
vector<ll>row;
dq.push_back(a[i]);
while(!dq.empty()){
if(dq.front()<=x){
x-=dq.front();
if(dq.front()!=0){
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){
for(ll j=0;j<x;++j){
row.push_back(i-dq.size()+1);
}
}
break;
}
}
if(!row.empty())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));
vector<vector<ll>>M(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;
vector<vector<ll>>A;
while(l<=r){
mid=l+(r-l)/2;
if(fun(a,n,mid,d)){
ans=mid;
A=v;
r=mid-1;
}
else{
l=mid+1;
}
}
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(auto it:A){
for(auto it2:it){
cout<<it2<<" ";
}
cout<<endl;
}
for(auto it:M){
for(auto it2:it){
cout<<it2<<" ";
}
cout<<endl;
}
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |