Submission #1198357

#TimeUsernameProblemLanguageResultExecution timeMemory
1198357TahirAliyevJob Scheduling (CEOI12_jobs)C++20
100 / 100
218 ms17076 KiB
#include <bits/stdc++.h> // #pragma GCC optimize("Ofast,no-stack-protector,unroll-loops") // #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native") // #define int long long #define ld long double #define ll long long #define pii pair<int, int> #define all(v) v.begin(), v.end() using namespace std; const int oo = 1e9 + 9; const int MAX = 1e5 + 5, LOGMAX = 20, B = 441, MOD = 998244353; int n, d, m; vector<int> E[MAX]; bool check(int mid, bool ans = 0){ vector<int> vis(m + 1, 0); queue<int> cur; bool bl = 1; for(int i = 1; i <= n + 1; i++){ for(int a : E[i]) cur.push(a); if(i > d){ for(int a : E[i - d - 1]) bl &= vis[a]; } int a = mid; while(a-- && cur.size()){ if(ans) cout << cur.front() << ' '; vis[cur.front()] = 1; cur.pop(); } if(ans && i != n + 1) cout << "0\n"; } return bl; } void solve(){ cin >> n >> d >> m; for(int i = 1; i <= m; i++){ int a; cin >> a; E[a].push_back(i); } int l = 1, r = m; while(l < r){ int mid = (l + r) / 2; if(check(mid)) r = mid; else l = mid + 1; } cout << l << '\n'; check(l, 1); } signed main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int t = 1; // cin >> t; while(t--) solve(); }
#Verdict Execution timeMemoryGrader output
Fetching results...