Submission #1257322

#TimeUsernameProblemLanguageResultExecution timeMemory
1257322satyanshuJob Scheduling (CEOI12_jobs)C++20
0 / 100
22 ms9988 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define endl '\n' std::mt19937 rng(std::chrono::steady_clock::now().time_since_epoch().count()); const ll MOD = 1e9 + 7; const ll INF = 1e9 + 7; bool bipartite; const int MAXN = 200005; ll fact[MAXN]; ll h, c, t; const ll NEG_INF = -1e17 - 7; void solve() { int n, m, d; cin >> n >> m >> d; vector<int> jobs(m); map<int, int> mp; vector<vector<int>> arrivals(n + 1); for (int i = 0; i < m; i++) { cin >> jobs[i]; arrivals[jobs[i]].push_back(i + 1); // store job id by arrival day mp[jobs[i]]++; mp[jobs[i] + d + 1]--; } int ans = 0, active = 0; for (int i = 1; i <= n; i++) { active += mp[i]; ans = max(ans, active); } cout << ans << endl; // Schedule banane ka part vector<vector<int>> schedule(n + 1); queue<pair<int, int>> q; // {job id, deadline} for (int day = 1; day <= n; day++) { // new arrivals for (int id : arrivals[day]) { q.push({id, day + d}); } // remove expired while (!q.empty() && q.front().second < day) { q.pop(); } // assign jobs today int jobsToday = 0; while (!q.empty() && jobsToday < ans) { schedule[day].push_back(q.front().first); q.pop(); jobsToday++; } } // print schedule for (int day = 1; day <= n; day++) { for (int id : schedule[day]) cout << id << " "; cout << 0 << endl; } } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int t; t = 1; while (t--) { solve(); } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...