Submission #1275666

#TimeUsernameProblemLanguageResultExecution timeMemory
1275666somefolkJob Scheduling (CEOI12_jobs)C++20
55 / 100
191 ms17648 KiB
#include <iostream> #include <cmath> #include <algorithm> #include <string> #include <vector> #include <map> #include <unordered_map> #include <queue> #include <deque> #include <set> #include <unordered_set> #include <complex> #include <list> #include <cassert> #include <chrono> #include <random> #include <stack> #include <iomanip> #include <fstream> using namespace std; #define endl "\n" // #define int long long const int INF = 1e9+7; const int MOD = 1e9+7; const int MAXN = 1e6+5; int days, delay, n; bool check(int m, vector<pair<int, int>> &a){ int curr = 1; vector<int> cnt(MAXN, 0); for(int i = 0; i < n; i++){ int j = i; for(; i < min(n, j+m); i++){ cnt[a[i].first] = curr; } curr++; i--; } for(int i = 1; i <= n; i++){ if(cnt[i] - i > delay) return false; } return true; } void solve(){ cin >> days >> delay >> n; vector<pair<int, int>> a(n); for(int i = 0; i < n; i++) { cin >> a[i].first; a[i].second = i+1; } sort(a.begin(), a.end()); int l = 1, r = INF, sol = 0; while(l <= r){ int m = (l+r)/2; if(check(m, a)){ sol = m; r = m-1; } else { l = m+1; } } cout << sol << endl; int prevj = 0; for(int i = 0; i < days; i++){ int j = prevj; for(; j < min(n, prevj+sol); j++){ cout << a[j].second << " "; } prevj = j; cout << 0 << endl; } } int32_t main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); int t = 1; // cin >> t; while(t--) solve(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...