제출 #1077105

#제출 시각아이디문제언어결과실행 시간메모리
1077105SeanCuiJob Scheduling (CEOI12_jobs)C++14
100 / 100
195 ms16976 KiB
#include <iostream> #include <vector> #include <bitset> #include <algorithm> #include <cassert> #include <numeric> #include <set> #include <cstring> #include <map> #include <iomanip> #include <string> #include <queue> #include <array> using namespace std; #define vi vector<int> #define ll long long #define pii pair<int, int> #define mp make_pair const int mx = 1e5 + 1; int a[mx], n, m, d; vi tr[mx]; bool can(int x){ queue<pii> q; for (int i = 1; i <= n; ++i){ for (int j: tr[i]) q.push(make_pair(j, i)); int cnt = x; while ((cnt > 0) & (!q.empty())){ pii temp = q.front(); if (i - temp.second > d) return false; q.pop(); --cnt; } } return true; } void solve(){ cin >> n >> d >> m; for (int i = 1; i <= m; ++i){ int x; cin >> x; ++a[x]; tr[x].push_back(i); } int l = 1, r = 1e5; while (l + 1 < r){ int m = (l + r)/2; if (can(m)) r = m; else l = m; } cout << r << "\n"; queue<int> q; for (int i = 1; i <= n; ++i){ for (int j: tr[i]) q.push(j); int cnt = r; while((cnt > 0) & !(q.empty())){ cout << q.front() << " "; q.pop(); --cnt; } cout << "0\n"; } } int main(){ //int t; cin >> t; //while(t--) solve(); }
#Verdict Execution timeMemoryGrader output
Fetching results...