Submission #1133512

#TimeUsernameProblemLanguageResultExecution timeMemory
1133512chanononJob Scheduling (CEOI12_jobs)C++20
0 / 100
1096 ms10844 KiB
#include <iostream> #include <vector> #include <algorithm> using namespace std; int a = 0, b = 0, c = 0; vector<int> m; bool check(vector<int> x, int num1) { sort(x.begin(), x.end()); for (int i = 0; i < c; i++) { x[i] += b; } for (int i = 0; i < c; i++) { x[i] -= (i + num1) / num1; if (i == c - 1 && (i + num1) / num1 > a) { return false; } } for (int i = 0; i < c; i++) { if (x[i] < 0) { return false; } } return true; } int sortAndFind(int o) { for (int i = 0; i < c; i++) { if (o == m[i]) { m[i] = -1; return m[i]; } } return 0; } int main() { int in1, in2, in3; cin >> in1 >> in2 >> in3; m.resize(in3); for (int i = 0; i < in3; i++) { cin >> m[i]; } vector<int> m1 = m; sort(m1.begin(), m1.end()); a = in1; b = in2; c = in3; vector<int> m3(in3); for (int i = 0; i < in3; i++) { m3[i] = sortAndFind(m1[i]); } int l = 0, r = in3 - 1; while (l < r) { int mid = (l + r) / 2; if (!check(m, mid)) { l = mid + 1; } else { r = mid; } } cout << l << endl; for (int j = 0; j < in1; j++) { for (int i = 0; i < l; i++) { if ((i + l * j) < m3.size()) { cout << m3[i + l * j] << " "; } } cout << 0 << endl; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...