Submission #1275204

#TimeUsernameProblemLanguageResultExecution timeMemory
1275204tredsused70Job Scheduling (CEOI12_jobs)C++20
100 / 100
169 ms14652 KiB
//#pragma GCC optimize("O3") //#pragma GCC optimize("unroll-loops") //#pragma GCC target("avx,avx2") //#pragma GCC target("sse,sse2,sse3,ssse3,sse4,avx,avx2") //#pragma GCC optimize("trapv") #include <bits/stdc++.h> using namespace std; #define fi first #define se second #define pb push_back #define all(x) x.begin(), x.end() #define mpr make_pair typedef long long ll; typedef unsigned long long ull; typedef long double ld; const int nmax = 100011, mod = 1000000007, inf = 2000010000, key = 200003, lg = 20, block = 300; const ll infll = 4000000000000000000; const ld eps = 1e-9; bool check(vector<int> vc, int d, int ans) { int cur = 1; int n = vc.size(); for(int i = 1; i < n; i++) { int cnt = ans; while(cnt > 0 && cur <= i) { int t = min(cnt, vc[cur]); cnt -= t; vc[cur] -= t; if(vc[cur] == 0) cur++; } if(i - d >= cur) return 0; } return 1; } void solve() { int n, m, d; cin >> n >> d >> m; vector<pair<int, int>> vc(m); vector<int> cnt(n + 1, 0); for(int i = 0; i < m; i++) { int a; cin >> a; vc[i] = mpr(a, i + 1); cnt[a]++; } sort(all(vc)); int l = 0, r = m; while(l + 1 < r) { int md = (l + r) / 2; if(check(cnt, d, md)) r = md; else l = md; } int ans = r; cout << ans << "\n"; int cur = 0; for(int i = 0; i < n; i++) { for(int j = 0; j < ans; j++) { if(cur == m) break; cout << vc[cur].second << " "; cur++; } cout << "0\n"; } return ; } int main() { //freopen("cruise.in","r",stdin); //freopen("cruise.out","w",stdout); ios_base::sync_with_stdio(0);cin.tie(0); srand(8713); //init(); int t = 1; //cin >> t; //int t_ = t; //t = rdi(); while(t--) { //cout << "Case #" << t_ - t << ": "; solve(); } //flush(); return 0; } /* 6 6 0 1 2 0 1 0 3 3 4 4 5 1 5 1 3 5 5 2 1 0 1 2 3 2 1 3 4 2 2 3 1 */
#Verdict Execution timeMemoryGrader output
Fetching results...