Pagini recente » Monitorul de evaluare | Cod sursa (job #160237) | Cod sursa (job #1440700) | Cod sursa (job #873152) | Cod sursa (job #3278932)
#include <fstream>
using namespace std;
ifstream fin("grupuri.in");
ofstream fout("grupuri.out");
const int nmax = 100000;
long long v[nmax + 5], n, k;
bool verif(long long mij)
{
long long i, cnt = 0;
long long s = 0;
for ( i = 1; i <= n; ++i )
{
s += min(mij, v[i]);
if (s >= mij )
{
++cnt;
s -= mij;
}
if ( cnt >= k )
return true;
}
return false;
}
int main()
{
int i;
fin >> k >> n;
for ( i = 1; i <= n; ++i )
fin >> v[i];
long long st = 1, dr = 1e9 * 1e5, sol = -1, mij;
while (st <= dr )
{
mij = (st + dr) / 2;
if ( verif(mij) == true )
{
sol = mij;
st = mij + 1;
}
else
dr = mij - 1;
}
fout << sol << '\n';
return 0;
}