Given an array we have to take average of an array and then take floor of that average and that value should be less than k. Link of this question:- https://www.hackerearth.com/practice/data-structures/arrays/1-d/practice-problems/algorithm/minimum-additions-0142ac80/
MY CODE:-
#include "bits/stdc++.h"
using namespace std;
int main() {
int t;
cin>>t;
while(t--){
int n,k;
cin>>n>>k;
int arr[n];
int s = 0;
for(int i=0;i<n;i++){
cin>>arr[i];
s += arr[i];
}
int ans;
if(floor(s/n)<=k){
cout<<0<<endl;
}
else{
cout<<floor( s/(k+1) - n + 1 )<<endl;
}
}
return 0;
}
In my code floor function is not working properly it pass small test case but when it run for large test case it fails. In discussion for some people are using (sum/n)<=k and ll int result=sum/(k+1)-n+1; and their all test case get pass.
We can do this with floor function also but floor function is not working properly in my code .
Can anyone help with my code and tell why floor function is not working in my code and why we are using k+1 and n+1 in the code can we do this differently with any different logic?