class Solution { public: // vector<int> getAverages(vector<int>& nums, int k) { // if(k == 0) return nums; // if(2*k+1>nums.size()) return vector<int>(nums.size(), -1); // vector<int> res; // int win_sum = 0; // for(int i = 0; i<k; i++){ // res.push_back(-1); // win_sum+=nums[i]; // } // for(int i = k; i<nums.size()-k; i++){ // for(int j = i-k; j<i+k+1; j++){ // win_sum+= nums[j]; // } // res.push_back(win_sum/(2*k+1)); // win_sum = 0; // } // for(int i = nums.size()-k; i<nums.size(); i++){ // res.push_back(-1); // } // return res; // }
vector<int> getAverages(vector<int>& nums, int k) {
int n = nums.size();
vector<int> res(n, -1);
if(k*2+1<=n){
long long sum = accumulate(nums.begin(), nums.begin() + 2*k+1, 0ll);
for(int i = k; i+k<n; i++){
if(i!=k){
sum+= nums[k+i] - nums[i-k-1];
}
res[i] = sum/(2*k + 1);
}
}
return res;
}
};