Link to this code:
https://cses.fi/paste/9e277db6d5eb2b2ed46c31/
// add me on genshin impact! 607984574
// Problem: Maximum Average Subarrays
// Attempted: 2025-07-29 10:07:09 EST
#include <bits/stdc++.h>
#ifndef LOCAL
#define debug(...) 0
#else
#include "/Users/envyaims/Documents/template/debug.cpp"
#endif
using namespace std;
using ll = long long;
#define F first
#define S second
#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()
#define pb push_back
#define pq priority_queue
#define FOR(i,a,b) for(int i = (a); i < (b); ++i)
#define FORE(i,a,b) for(int i = (a); i <= (b); ++i)
#define ROF(i,a,b) for(int i = (a); i >= (b); --i)
#define trav(a,x) for(auto& a: x)
#define sz(x) (int)x.size()
#define make_unique(v) v.erase(unique(all(v)), v.end());
template<class T> using minpq = pq<T, vector<T>, greater<T>>;
template<class T> bool ckmin(T& a, const T& b){return b<a?a=b,1:0;}
template<class T> bool ckmax(T& a, const T& b){return a<b?a=b,1:0;}
template<int D, typename T>struct vt : public vector<vt<D - 1, T>> { template<typename... Args>
vt(int n = 0, Args... args) : vector<vt<D - 1, T>>(n, vt<D - 1, T>(args...)) {}};
template<typename T> struct vt<1, T> : public vector<T> {
vt(int n = 0, const T& val = T()) : vector<T>(n, val) {}};
template<typename T> istream& operator>>(istream& in, vector<T>& a) {for(auto &x : a) in >> x; return in;};
template<typename T> ostream& operator<<(ostream& out, vector<T>& a) {for(auto &x : a) out << x << ' '; return out;}
// returns if (x1/y1) >= (x2/y2)
bool compare(pair<ll, ll> a, pair<ll, ll> b){
return (__int128_t)a.F * b.S >= (__int128_t)b.F * a.S;
}
bool cross(pair<ll, ll> a, pair<ll, ll> b, pair<ll, ll> c){
return compare({b.S - a.S, b.F - a.F}, {c.S - b.S, c.F - b.F});
}
void uwu(){
int n; cin >> n;
vector<int> a(n); cin >> a;
vector<ll> p(n+1);
FOR(i,0,n) p[i+1] = a[i] + p[i];
vector<int> ans(n);
vector<pair<int, ll>> hull = {{0,0}}; // (i, p[i])
FOR(i,1,n+1){
pair<int, ll> cur = {i, p[i]};
while(sz(hull) >= 2 && cross(hull[sz(hull)-2], hull.back(), cur)){
hull.pop_back();
}
cout << i - hull.back().F << " ";
hull.pb(cur);
}
}
signed main(){
cin.tie(0) -> sync_with_stdio(0);
int t = 1;
// cin>>t;
while(t--){
uwu();
}
}