Cod sursa(job #2910854)

Utilizator TudosieRazvanTudosie Marius-Razvan TudosieRazvan Data 25 iunie 2022 14:07:01
Problema Grupuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#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;
}