Cod sursa(job #2910850)

Utilizator TudosieRazvanTudosie Marius-Razvan TudosieRazvan Data 25 iunie 2022 13:51:19
Problema Grupuri Scor 12
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.21 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;

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 / difer;
			long long int ramas = sum - posib * difer;
			fout << v[i - 1] + ramas;
			return 0;
		}
	}
	//mi-a mai ramas sum de distribuit la toti egal
	long long int posib = sum / k;//sa le dau tuturor egal
	long long int ramas = sum - posib * k;
	if (ramas == 0)
	{
		fout << v[k] + posib;
		return 0;
	}
	fout << v[k] + posib - 1;//sunt pe un multiplu de k+ramas
	return 0;
}