➤ Problem Link : 1011B. Planning The Expedition
✅ C++ Solution :
#include <bits/stdc++.h>
using namespace std;
bool f(int days,vector<int>& v,int n)
{
int cnt=0;
for(int i=0;i<v.size();i++)
{
cnt+=v[i]/days;
// cout<<cnt<<" ";
if(cnt>=n)
return true;
}
return false;
}
int main() {
int n,m;
cin>>n>>m;
// cout<<n<<endl;
int arr[m+1];
vector<int>v;
int i;
for(i=0;i<m;i++)
cin>>arr[i];
sort(arr,arr+m);
/* for(i=0;i<m;i++)
cout<<arr[i]<<" ";*/
i=0;
int x=arr[0];
int cnt=0;
// cout<<"n:"<<n<<endl;
while(i<m)
{
while(x==arr[i])
{
cnt++;
i++;
}
v.push_back(cnt);
cnt=0;
x=arr[i];
}
sort(v.begin(),v.end(),greater<int>());
/* for(i=0;i<v.size();i++)
cout<<v[i]<<" ";*/
int low=0,high=1000;
int mid;
while(low<high)
{
mid=low+(high-low+1)/2;
if(f(mid,v,n))
low=mid;
else
high=mid-1;
}
if(high==51)
high=50;
cout<<high<<endl;
return 0;
}
Thank you for your patience reading. If you enjoyed this post, I’d be very grateful if you’d help it spread by emailing it to a friend, or sharing it on Whatsapp or Facebook.
😇Happy Learning!!
