Pagini recente » Cod sursa (job #2609952) | Cod sursa (job #843003) | Cod sursa (job #3186320) | Cod sursa (job #1455414) | Cod sursa (job #1464387)
#include <fstream>
#define NMAX 100001
using namespace std;
int a[NMAX];
bool possible(int nr, int n, int k)
{
int completed = 0;
for(int i = 0; i < n && k; i++)
{
if(a[i] < nr)
completed += a[i];
else
completed += nr;
if(completed >= nr)
{
k--;
completed %= nr;
}
}
if(k <= 0)
return true;
return false;
}
int searchForNr(int n, int k, int maxNr)
{
int left = 0, right = maxNr, mid;
while(left < right)
{
mid = (left + right + 1) / 2;
if(possible(mid, n, k))
left = mid;
else
right = mid - 1;
}
return left;
}
int main()
{
int n, k;
long long maxNr = 0;
ifstream f("grupuri.in");
f >> k >> n;
for(int i = 0; i < n; i++)
{
f >> a[i];
maxNr += a[i];
}
f.close();
maxNr /= k;
ofstream g("grupuri.out");
g << searchForNr(n, k, maxNr) << '\n';
g.close();
return 0;
}