Submission #532903

#TimeUsernameProblemLanguageResultExecution timeMemory
532903louiskwokJob Scheduling (CEOI12_jobs)C++17
100 / 100
502 ms26884 KiB
#include <bits/stdc++.h>
using namespace std;
struct Job {
    int id;
    int day;
    bool operator<(const Job arb) const { return day < arb.day; }
} job[1000005];
int n,d,m;
vector <int> tmp[100005],ans[100005];
bool possible(int x) {
    int ptr = 1;
    for (int i=1;i<=n;i++) {
        tmp[i].clear();
        for (int j=0;j<x;j++) {
            if (job[ptr].day>i) break;
            if (job[ptr].day+d>=i) tmp[i].push_back(job[ptr++].id);
            else return false;
            if (ptr>m) return true;
        }
    }
    return false;
}
int main() {
    cin >> n >> d >> m;
    for (int i=1;i<=m;i++) {
        cin >> job[i].day;
        job[i].id = i;
    }
    sort(job+1,job+m+1);
    int lo = 1,hi = m;
    while (lo<hi) {
        int mid = lo+(hi-lo)/2;
        if (possible(mid)) {
            hi = mid;
            for (int i=1;i<=n;i++) ans[i] = tmp[i];
        }
        else lo = mid+1;
    }
    cout << lo << endl;
    int it = 1;
    for (int i=1;i<=n;i++) {
        for (int j=0;j<ans[i].size();j++) cout << ans[i][j] << ' ';
        cout << 0 << endl;
    }
    return 0;
}

Compilation message (stderr)

jobs.cpp: In function 'int main()':
jobs.cpp:42:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   42 |         for (int j=0;j<ans[i].size();j++) cout << ans[i][j] << ' ';
      |                      ~^~~~~~~~~~~~~~
jobs.cpp:40:9: warning: unused variable 'it' [-Wunused-variable]
   40 |     int it = 1;
      |         ^~
#Verdict Execution timeMemoryGrader output
Fetching results...