Skip to main content

Sliding Windows

#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define endl '\n'

int k = 5;
vector<double> res(9 - k + 1);

void sol(vector<int> &v)
{
int winst = 0, winen = 0; /* winst == window start, winen == windowend */
double winsum = 0; /* sum of window of size k */
for (int winen = 0; winen < v.size(); winen++)
{
winsum += v.at(winen);
if (winen >= k - 1)
{
res.at(winst) = winsum / k;
winsum -= v.at(winst);
++winst;
}
}

for (auto el : res)
{
cout << el << " ";
}
}

int main()
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr);

vector<int> v = {1, 3, 2, 6, -1, 4, 1, 8, 2};
sol(v);

return 0;
}