Pagini recente » Cod sursa (job #16706) | Cod sursa (job #1791998) | Cod sursa (job #901503) | Cod sursa (job #1040565) | Cod sursa (job #1280790)
//#include <iostream>
#include <fstream>
using namespace std;
ifstream f("grupuri.in");
ofstream g("grupuri.out");
int n, k;
long long ret =-1;
int a[100003];
int mini;
long long maxi;
void Citire()
{
f>>k>>n;
int i;
for(i=1;i<=n;i++)
{
f>>a[i];
maxi +=a[i];
}
mini = a[1];
}
int Check(long long x)
{
long long suma1;
long long suma2 =0;
int i=1;
while(a[i] < x && i<=n)
{
suma2 +=a[i];
i++;
}
suma1 = 1ll*(k-(n-i+1))*x;
//cout<<suma1<<"\n";
if(suma2 >= suma1)
return 1;
return 0;
}
void Caut_bin()
{
long long st,dr,mij;
st = mini;
dr = maxi;
while(st<=dr)
{
//cout<<"st= "<<st;
//cout<<" dr= "<<dr<<"\n";
mij = (st+dr)/2;
if(Check(mij) == 1)
{
ret = mij;
st = mij+1;
}
else
dr = mij-1;
}
//cout<<Check(4);
}
int main()
{
Citire();
Caut_bin();
g<<ret<<"\n";
return 0;
}