Submission #907110

#TimeUsernameProblemLanguageResultExecution timeMemory
907110typ_ikWatching (JOI13_watching)C++17
50 / 100
47 ms262144 KiB
#include <bits/stdc++.h> #define ll long long #define all(x) (x).begin(), (x).end() #define rall(x) (x).rbegin(), (x).rend() #define watch(x) cout << (#x) << " : " << x << '\n' #define boost ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0) using namespace std; const int N = 2222; bitset <N> bs[N][N]; int a[N]; void solve() { int n, p, q; cin >> n >> p >> q; for (int i = 1; i <= n; i++) cin >> a[i]; sort(a + 1, a + n + 1); if (p + q >= n) { cout << 1 << '\n'; return; } auto check = [&](int w) -> bool { for (int i = 0; i <= n; i++) for (int c = 0; c <= p; c++) bs[i][c].reset(); for (int i = 0; i <= p; i++) for (int j = 0; j <= q; j++) bs[0][i][j] = 1; int j0 = 0, j1 = 0; for (int i = 1; i <= n; i++) { // place w. while (j0 + 1 <= n && a[j0 + 1] - a[i] + 1 <= w) j0++; while (j1 + 1 <= n && a[j1 + 1] - a[i] + 1 <= 2*w) j1++; for (int lp = 0; lp <= p; lp++) bs[j0][lp] |= bs[i-1][lp+1]; for (int lp = 0; lp <= p; lp++) bs[j1][lp] |= (bs[i-1][lp] >> 1); } return bs[n][0][0]; }; int l = 0, r = 1e9 + 128; while (l + 1 < r) { int m = (l + r) >> 1; if (check(m)) r = m; else l = m; } cout << r << '\n'; } main() { boost; solve(); return 0; }

Compilation message (stderr)

watching.cpp:66:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   66 | main() {
      | ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...