Pagini recente » Cod sursa (job #874587) | Cod sursa (job #708282) | Cod sursa (job #2416337) | Cod sursa (job #519752) | Cod sursa (job #2910854)
#include <fstream>
#include <iomanip>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <stack>
#include <map>
#include <cstring>
#include <climits>
#include <unordered_map>
#define NMAX 100003
using namespace std;
//Simularea efectiva a gruparilor
//Complexitate O(n) de la citire + O(log n) de la cautare -> O(n)
ifstream fin("grupuri.in");
ofstream fout("grupuri.out");
int v[NMAX], n, k;
long long int sum = 0;
int main() {
fin >> k >> n;
long long int total = 0;
for (int i = 1; i <= n; i++)
{
fin >> v[i];
total += v[i];
}
int st = 1, dr = total/k ,sol=1;
while (st <= dr)
{
int mij = (st + dr) / 2;
long long int sum = 0;
for (int i = 1; i <= n; i++)
{
//imi iau din fiecare grupa nr de animale care imi trebuie
sum += min(mij, v[i]);
}
if (mij <= sum / k)
{
//presupunem ca avem in fiecare grupa mij elemente ca sa formam suma
sol = mij;
st = mij + 1;
}
else {
dr = mij - 1;
}
}
fout << sol;
return 0;
}