제출 #1139728

#제출 시각아이디문제언어결과실행 시간메모리
1139728adelinaSwimming competition (LMIO18_plaukimo_varzybos)C++20
0 / 100
0 ms324 KiB
#include <iostream> #include <algorithm> using namespace std; const int Nmax = 1e6 + 5; int v[Nmax]; int n, a, b; int lb(int x) { int st = 1, dr = n, mid, ans = 0; while(st <= dr) { mid = (st + dr) / 2; if(v[mid] <= x) { ans = mid; st = mid + 1; } else dr = mid - 1; } return ans; } bool ok(int dif) { int i, poz; //cout << dif << ": " << '\n'; for(i = 1; i <= n; i ++) { poz = lb(v[i] + dif); if(poz - i + 1 < a) return false; if(poz - i > b) poz = i + b; if(poz != n && n - poz < a) poz = n - a; if(poz - i + 1 < a) return false; //cout << i << " " << poz << '\n'; i = poz; } 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 = 1; 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...