Submission #77249

#TimeUsernameProblemLanguageResultExecution timeMemory
77249VardanyanJob Scheduling (CEOI12_jobs)C++14
90 / 100
311 ms33792 KiB
#define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <algorithm> #include <queue> using namespace std; const int N = 1000 * 100 + 7; int day[N]; vector<int> g[N]; vector<int> as[N]; int main(){ int n, d, m; scanf("%d%d%d", &n, &d, &m); for (int i = 1; i <= m; i++){ int p; scanf("%d", &p); day[p]++; g[p].push_back(i); } int l = 1; int r = m; int ans = m; while (l <= r){ int mid = (l + r) / 2; queue<int> q; for (int i = 1; i <= n; i++){ int x = day[i]; while (x--) q.push(i); bool f = true; int num = mid; while (!q.empty()){ int v = q.front(); if (i > v + d){ f = false; break; } if (num > 0){ q.pop(); num--; } else break; } } if (q.empty()) { ans = mid; r = mid - 1; } else l = mid + 1; } int mid = ans; queue<int> q; for (int i = 1; i <= n; i++){ int x = day[i]; while (x--) q.push(i); bool f = true; int num = mid; while (!q.empty()){ int v = q.front(); if (i > v + d){ f = false; break; } if (num > 0){ q.pop(); num--; as[i].push_back(v); } else break; } } cout << ans << endl; for (int i = 1; i <= n; i++){ for (int j = 0; j < as[i].size(); j++){ int l = as[i][j]; int e = g[l][g[l].size() - 1]; printf("%d ", e); g[l].pop_back(); } printf("%d\n", 0); } return 0; }

Compilation message (stderr)

jobs.cpp: In function 'int main()':
jobs.cpp:29:9: warning: variable 'f' set but not used [-Wunused-but-set-variable]
    bool f = true;
         ^
jobs.cpp:55:8: warning: variable 'f' set but not used [-Wunused-but-set-variable]
   bool f = true;
        ^
jobs.cpp:73:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for (int j = 0; j < as[i].size(); j++){
                   ~~^~~~~~~~~~~~~~
jobs.cpp:12:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d%d%d", &n, &d, &m);
  ~~~~~^~~~~~~~~~~~~~~~~~~~~~
jobs.cpp:15:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d", &p);
   ~~~~~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...