제출 #441765

#제출 시각아이디문제언어결과실행 시간메모리
441765YuisuyunoJob Scheduling (CEOI12_jobs)C++14
100 / 100
500 ms24992 KiB
//Nguyen Huu Hoang Minh
#include <bits/stdc++.h>
#define pb push_back
#define fi first
#define se second
#define N 1000001
#define ii pair<int, int>
#define vi vector<int>

using namespace std;
const int minf = -1e9;

vector<int> res[100012];
int n, m, d;

bool ok(int machine, vector<ii> a){
    int delays=0;
    int en[machine] = {0};
    for(int i=0, cur=0; i<m; i++, cur++){
        if (cur==machine) cur=0;
        if (en[cur] + 1 > a[i].fi){
            en[cur]++;
            delays = max(delays,en[cur]-a[i].fi);
        }
        else en[cur] = a[i].fi;
    }
    return delays <= d;
}

int main()
{
    vector<ii> a;
    cin >> n >> d >> m;
    a.resize(m);
    for(int i=0; i<m; i++){
        cin >> a[i].fi;
        a[i].se = i+1;
    }
    sort(a.begin(),a.end());
    int l = 0, r = m;
    int ans;
    while (r-l > 0){
        int mid = (l+r)/2;
        if (ok(mid,a)){
            r = mid;
        }
        else l = mid+1;
    }
    cout<<l<<'\n';
    int endT[l]={0};
    for(int i=0, cur=0; i<m; i++, cur++){
        if (cur==l) cur=0;
        endT[cur] = max(endT[cur]+1,a[i].fi);
        res[endT[cur]].pb(a[i].se);
    }
    for(int i=1; i<=n; i++){
        for(int x : res[i]) cout << x << ' ';
        cout << "0\n";
    }
    return 0;
}

컴파일 시 표준 에러 (stderr) 메시지

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