Cod sursa(job #2666122)

Utilizator dream3rDavid Pop dream3r Data 31 octombrie 2020 22:17:20
Problema Grupuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <queue>
#include <climits>
#include <string.h>
#include <algorithm>
using namespace std;
#define ll  long long int
ifstream f("grupuri.in");
ofstream o("grupuri.out");
vector<ll>v;
ll k, n;
ll s;

bool eok(ll x)
{
	ll cate = 0;
	for (int i = n - 1; i >= 0; i--)
	{
		cate += min(x, v[i]);
	}

	return cate >= 1ll * x * k;
}


int main()
{
	f >> k >> n;
	for (size_t i = 0; i < n; i++)
	{
		ll x;
		f >> x;
		v.push_back(x);
		s += x;
	}
	ll stanga = 0;
	ll dreapta = s;


	while (stanga < dreapta - 1)
	{
		ll mijloc = (stanga + dreapta) / 2;
		if (eok(mijloc))
		{
			stanga = mijloc;
		}
		else
		{
			dreapta = mijloc;
		}
	}

	o << stanga;


}