Хотел узнать в чем моя ошибка и правильная ли у меня идея. Вот код:
#include <iostream>
#include <cmath>
#include <map>
#include <vector>
#include <algorithm>
#include <time.h>
#include <set>
#include <queue>
#include <unordered_set>
#include <fstream>
using namespace std;
#define ll long long
void fc (){
ll n,m,k;
cin>>n>>k;
ll l=k+1,r=0,mx=0;
ll a[n+5];
for (int i=0; i<n; i++){
cin>>a[i];
mx=max(mx,a[i]);
}r=mx;;
ll res1,res2;
for (int it=0; it<100; it++){
// cout<<l<<" "<<r<<"\n";
ll mid1=(2*l+r)/3,mid2=(l+2*r)/3;
res1=0,res2=0;
for (int i=0; i<n; i++){
res1+=a[i]/mid1;
res2+=a[i]/mid2;
}
res1*=mid1-k;
res2*=mid2-k;
if (res1<res2){
l=mid1;
}else{
r=mid2;
}
}
ll ans=0;
// cout<<max(res1,res2);
for (int i=l; i<=r; i++){
ll res=0;
for (int j=0; j<n; j++){
res+=a[j]/i;
}res*=i-k;
ans=max(ans,res);
}
ll res=0;
for (int j=0; j<n; j++){
res+=a[j]/(k+1);
}
ans=max(ans,res);
res=0;
for (int j=0; j<n; j++){
res+=a[j]/(mx);
}res*=mx-k;
ans=max(ans,res);
cout<<ans;
}
int main (){
int T=1;
// cin>>T;
while (T--) fc();
}```