Submission #416816

#TimeUsernameProblemLanguageResultExecution timeMemory
416816jackkkkJob Scheduling (CEOI12_jobs)C++11
55 / 100
423 ms20924 KiB
#include <stdio.h> #include <iostream> #include <string> #include <vector> #include <queue> #include <map> #include <array> #include <deque> #include <unordered_map> #include <unordered_set> #include <set> #include <algorithm> #include <stdlib.h> #include <math.h> #include <list> #include <float.h> #include <climits> using namespace std; void quit() { cout.flush(); exit(0); } long long n, d, m; vector <pair<long long ,long long>> requests; bool good(long long machines){ for(long long i = 0; i < m; i++){ if((i/machines+1)-requests[i].first>d){ return false; } } return true; } int main(void){ //freopen("qwer.in", "r", stdin); //freopen("qwer.out", "w", stdout); ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n >> d >> m; requests.resize(m); for(long long i = 0; i < m; i++){ cin >> requests[i].first; requests[i].second = i+1; } sort(requests.begin(), requests.end()); long long s = 0, e = 1000000000; while(s!=e){ long long mid = (s+e)/2; if(good(mid)){ e=mid; } else{ s=mid+1; } } cout << e << "\n"; long long num_left = n; for(long long i = 0; i < m; i+=e){ for(long long j = i; j < min(m, i+e); j++){ cout << requests[j].second << " "; } num_left--; cout << "0\n"; } for(long long i = 0; i < num_left; i++){ cout << "0\n"; } quit(); }
#Verdict Execution timeMemoryGrader output
Fetching results...