Submission #1139871

#TimeUsernameProblemLanguageResultExecution timeMemory
1139871adelinaSwimming competition (LMIO18_plaukimo_varzybos)C++20
100 / 100
428 ms6376 KiB
#include <iostream> #include <algorithm> #include <queue> using namespace std; const int Nmax = 1e6 + 5; int v[Nmax]; int n, a, b; bool ok(int dif) { int dr = a, ok = 0; deque<int>st; //cout << dif << ": " << '\n'; st.push_front(1); while(dr <= n && !st.empty()) { //cout << dr << '\n'; //cout << dr - st.front() + 1<< " " << v[dr] - v[st.front() ] << '\n'; if(dr - st.front() + 1 >= a) { if(dr - st.front() + 1 <= b && v[dr] - v[st.front()] <= dif) dr ++, st.push_back(dr); else st.pop_front(); } else dr ++; /* for(auto it: st) cout << it << ' '; cout << '\n';*/ } dr --; if(st.empty() || st.back() != n + 1) return false; return true; } int main() { int i, st, dr, mid, ans = 0; cin >> n >> a >> b; for(i = 1; i <= n; i ++) cin >> v[i]; sort(v + 1, v + n + 1); st = 0; dr = v[n] - v[1]; while(st <= dr) { mid = (st + dr) / 2;//dif maxima if(ok(mid)) { ans = mid; dr = mid - 1; } else st = mid + 1; } cout << ans; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...