Submission #744040

#TimeUsernameProblemLanguageResultExecution timeMemory
744040FnzxJob Scheduling (CEOI12_jobs)C++17
55 / 100
37 ms14672 KiB
#include<bits/stdc++.h> using namespace std; using ll = long long ; using pii = pair<ll , ll> ; using i3 = tuple<ll , ll , ll> ; const int N = 1e5+5 ; const int MOD = 1e9+7 ; ll n , d , m ; pii S[N] ; vector<ll> ans2[N] ; bool solve(ll mid){ ll day = 1 , cnt = 0 ; for(int i=1;i<=m;i++){ if(day < S[i].first){ day = S[i].first ; cnt = 0 ; } if(day <= S[i].first + d){ // do job i-th cnt++ ; ans2[day].push_back(S[i].second) ; } else { return false ; } if(cnt == mid){ day++; cnt = 0 ; } } if(cnt == 0) day--; return day <= n ; } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cin >> n >> d >> m ; for(int i=1, x;i<=m;i++){ cin >> x ; S[i] = {x , i}; } sort(S+1 , S+m+1) ; ll l = 1 , r = m , ans = 0 ; while(l <= r){ ll mid = (l+r)/2 ; if(solve(mid)){ r = mid-1 ; ans = mid ; } else { l = mid+1 ; for(int i=1;i<=n;i++) ans2[i].clear(); } } cout << ans << "\n" ; for(int i=1;i<=n;i++){ for(int x : ans2[i]){ cout << x << " " ; } cout << "0\n" ; } }
#Verdict Execution timeMemoryGrader output
Fetching results...