Từ NHÓM DỰ NGUỒN ĐTQG 25-26, CHVOJ: CHV Online Judge
Thông tin
include <bits/stdc++.h>
using namespace std;
define lwb lower_bound
define upb upper_bound
define FAT(x, H) for (auto &x: H)
define int long long
define ull unsigned long long
define pb push_back
define fi first
define se second
define RUNFARSTFLUSS iosbase::syncwith_stdio(false); cin.tie(NULL);
define vi vector<int>
define vvi vector<vi>
define vvvi vector<vvi>
define str string
define el '\n'
define ist insert
define mapfas multimap<int ,int>
define FOR(i, a, b) for (int i = (a), _b = (b); i <= _b; ++i)
define FORD(i, b, a) for (int i = (b), _a = (a); i >= _a; --i)
define NgBao signed main
define file(name) if (fopen (name".inp", "r") ) { freopen (name".inp", "r", stdin); freopen (name".out", "w", stdout); }
const int oo = 1e18 + 15; const int Nmax = 5e6 + 7; const int dlieu = 1e7;
int n, k; double ans; int a[Nmax]; double pref[Nmax];
bool can(double mid) { pref[0] = 0.0; double minPref = 0.0; FOR(i, 1, n) { pref[i] = pref[i - 1] + (double)a[i] - mid; if (i >= k) { minPref = min(minPref, pref[i - k]); if (pref[i] - minPref >= 0.0) return true; } } return false; }
NgBao() { RUNFARSTFLUSS file("AVERAGE");
cin >> n >> k;
FOR(i, 1, n) cin >> a[i];
int mn = a[1], mx = a[1];
FOR(i, 2, n) { mn = min(mn, a[i]); mx = max(mx, a[i]); }
double lo = (double)mn, hi = (double)mx;
FOR(it, 1, 60) {
double mid = (lo + hi) / 2.0;
if (can(mid)) lo = mid;
else hi = mid;
}
cout << fixed << setprecision(3) << lo << el;
return 0;
}