Pagini recente » Cod sursa (job #1041555) | Cod sursa (job #119041) | Cod sursa (job #539017) | Cod sursa (job #1688867) | Cod sursa (job #1146059)
#include <fstream>
using namespace std;
ifstream f("grupuri.in");
ofstream g("grupuri.out");
int K,N,S;
int Array[100005];
void Read()
{
int i;
f>>K>>N;
for(i=1;i<=N;i++)
f>>Array[i],S+=Array[i];
}
bool Result(int groups)
{
int i=N;
while(i>0 && Array[i]>=groups)
--i;
if(groups<=(N-i-1))
return 1;
int counter=groups-i,sum=0;
for(;i>=1;i--)
sum+=Array[i];
if(sum>=counter*K)
return 1;
return 0;
}
void Binary_Search()
{
int st=1,dr=S/K;
int sol=0;
while(st<=dr)
{
int mid=(st+dr)/2;
if(Result(mid)==1)
{
sol=mid;
st=mid+1;
}
else
dr=mid-1;
}
g<<sol<<"\n";
}
int main()
{
Read();
Binary_Search();
return 0;
}