1 тур область бшка 2022-2023


Хотел узнать в чем моя ошибка и правильная ли у меня идея. Вот код:

#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();
  
  
  
}```
1 лайк

6 сообщений было перемещено в эту тему: Информатика → Областная → 2023 | BeyondOlympiads