Submission #239319

#TimeUsernameProblemLanguageResultExecution timeMemory
239319dCodingJob Scheduling (CEOI12_jobs)C++14
10 / 100
203 ms11768 KiB
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <assert.h> #include <iostream> #include <iomanip> #include <vector> #include <algorithm> #include <numeric> #include <set> #include <map> #include <stack> #include <queue> #include <deque> #include <unordered_map> #define ll long long int #define F0R(i,n) for(auto i = 0; i < (n); i++) #define FOR(i,a,b) for(auto i = (a); i <= (b); i++) #define ROF(i,a,b) for(auto i = (a); i >= (b); i--) #define pii pair<int,int> #define pll pair<ll,ll> #define vv vector #define F first #define S second #define pb push_back #define vi vector<int> using namespace std; const int MAXM = 1e6+5; int n,d,m; pii a[MAXM]; bool valid(int machines) { FOR(i,1,n) { int maxjob = machines*i; maxjob = min(maxjob,m); int minjob = machines*(i-1)+1; if(i-a[minjob].F > d) { return false; } if(maxjob == m)break; } return true; } signed main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> n >> d >> m; FOR(i,1,m) cin >> a[i].F; FOR(i,1,m)a[i].S = i; sort(a+1,a+m+1); int lo = 1,hi = m,mid; while(lo < hi) { mid = lo+hi >> 1; if(valid(mid)) { hi = mid-1; } else { lo = mid+1; } } assert(lo == hi); int machines = lo; if(m%machines != 0) { int num = m/machines; m = machines/num; } if(!valid(m))++m; cout << machines << "\n"; int jobNumber = 1; F0R(i,n) { if(jobNumber > m) { cout << "0\n"; continue; } F0R(j,machines) { if(jobNumber > m) { cout << "0\n"; // goto nextDay; } else { cout << a[jobNumber++].S << " "; } } cout << "0\n"; // nextDay:; } }

Compilation message (stderr)

jobs.cpp: In function 'int main()':
jobs.cpp:58:11: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   mid = lo+hi >> 1;
         ~~^~~
#Verdict Execution timeMemoryGrader output
Fetching results...