제출 #1285669

#제출 시각아이디문제언어결과실행 시간메모리
1285669MasterMoonJob Scheduling (CEOI12_jobs)C++20
100 / 100
160 ms13896 KiB
#include <bits/stdc++.h> using namespace std; #define __Master_Moon__ int main() #define ll long long #define el "\n" #define fi first #define sq(x) (x)*(x) #define se second #define pub push_back #define puf push_front #define pii pair <int, int> #define pll pair <long long, long long> #define piii pair <int, pair <int, int>> #define iiii pair <int, pair <int, pair <int, int>>> #define plll pair <long long, pair <long long, long long>> #define FOR(i, a, b) for(ll i = (a);i <=(b);i++) #define FO(i, a, b) for(int i = (a);i >= (b);i--) #define REP(i, n) for(int i = 0;i < (n);i++) long const maxn = 1e6+5; int n,m,k,ans,d[maxn]; pii a[maxn]; bool check(int val) { int it = 1,cnt = d[it]; FOR(i,1,n) { while(it < i && cnt == 0) { it++; cnt += d[it]; } if(i - it > k) return false; while(it < i && cnt < val) { it++; cnt += d[it]; } cnt = max(0,cnt - val); } return (!cnt); } void solve() { cin >> n >> k >> m; FOR(i,1,m) { int tmp; cin >> tmp; d[tmp]++; a[i].fi = tmp; a[i].se = i; } ll l = 1,r = m; while(l<=r) { ll mid = (l+r)/2; if(check(mid)) { ans = mid; r = mid -1; } else l = mid + 1; } sort(a+1,a+m+1); cout << ans << el; int it = 1; FOR(i,1,n) { int cnt = ans; while(it <= m && a[it].fi <= i && cnt) { cout << a[it].se << ' '; cnt--; it++; } cout << 0 << el; } } __Master_Moon__ { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); solve(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...