Submission #1111916

#TimeUsernameProblemLanguageResultExecution timeMemory
1111916brkdnmzSwimming competition (LMIO18_plaukimo_varzybos)C++17
100 / 100
994 ms16260 KiB
#include <bits/stdc++.h> using namespace std; #define pb push_back using ll = long long; int mod = 1e9 + 7; // 998244353 const int N = 1e5 + 5; int main() { ios::sync_with_stdio(0); cin.tie(0); int n, A, B; cin >> n >> A >> B; int a[n]; for (int &x : a) cin >> x; sort(a, a + n); int l = 0, r = a[n - 1] - a[0]; while (l < r) { int mid = (l + r) / 2; int dp[n + 1] = {}; dp[0] = 1; deque<int> min_q, max_q; int last_valid_l = 0; for (int i = 0; i < n; i++) { // mustafaoz orz // https://a...content-available-to-author-only...e.com/problems/neighborhoods/submissions/3a0bf1cf-fde7-0556-fc37-88a20014c78e/detail while (max_q.size() && i - max_q.back() >= B) max_q.pop_back(); while (min_q.size() && i - min_q.back() >= B) min_q.pop_back(); while (max_q.size() && a[max_q.front()] <= a[i]) max_q.pop_front(); while (min_q.size() && a[min_q.front()] >= a[i]) min_q.pop_front(); max_q.push_front(i); min_q.push_front(i); while (a[max_q.back()] - a[min_q.back()] > mid || last_valid_l <= i - B) { if (max_q.back() == last_valid_l) max_q.pop_back(); if (min_q.back() == last_valid_l) min_q.pop_back(); last_valid_l++; } dp[i + 1] = dp[i]; if (i + 1 >= A && last_valid_l <= i - A + 1) { dp[i + 1] += dp[i - A + 1] - (last_valid_l ? dp[last_valid_l - 1] : 0) > 0; } } if (dp[n] - dp[n - 1]) r = mid; else l = mid + 1; } cout << l << "\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...