Cod sursa(job #2910853)

Utilizator TudosieRazvanTudosie Marius-Razvan TudosieRazvan Data 25 iunie 2022 14:00:45
Problema Grupuri Scor 100
Compilator cpp-64 Status done
Runda 3_iulie Marime 1.08 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)

ifstream fin("grupuri.in");
ofstream fout("grupuri.out");

int v[NMAX], n, k;
long long int sum = 0;


int main() {

	fin >> k >> n;
	for (int i = 1; i <= n; i++)
	{
		int x;
		fin >> x;
		if (i <= n - k)
		{
			sum += x;
		}
		else {
			v[i - n + k] = x;
		}
	}

	for (int i = 2; i <= k; i++)
	{
		int trans = i - 1;
		int difer = v[i] - v[i - 1];

		//vreau sa aduc secventa 1, 2 .. i la v[i]
		if (sum >= trans * difer)
		{
			sum -= trans * difer;
		}
		else {
			//nu pot sa aduc toate elementele la v[i]
			long long int posib = sum / trans;
			fout << v[i - 1] + posib;
			return 0;
		}
	}
	//mi-a mai ramas sum de distribuit la toti egal
	long long int posib = sum / k;//sa le dau tuturor egal
	fout << v[k] + posib;
	return 0;
}