Cod sursa(job #3134729)

Utilizator Ilie_MityIlie Dumitru Ilie_Mity Data 30 mai 2023 16:15:03
Problema Grupuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.75 kb
//Ilie Dumitru
#include<cstdio>
const int NMAX=100005;

int N, K;
int v[NMAX];

bool doable(long long nrGrp)
{
	long long left=nrGrp;
	int i, nrCmpl=0;

	for(i=N-1;i>-1 && nrCmpl<K;--i)
	{
		if(v[i]>=nrGrp)
			++nrCmpl;
		else if(left>v[i])
			left-=v[i];
		else
			++nrCmpl, left=nrGrp-(v[i]-left);
	}
	return nrCmpl==K;
}

int main()
{
	FILE* f=fopen("grupuri.in", "r"), *g=fopen("grupuri.out", "w");
	//FILE* f=stdin, *g=stdout;
	int i;
	long long l, r=0, mid;

	fscanf(f, "%d%d", &K, &N);
	for(i=0;i<N;++i)
		fscanf(f, "%d", v+i), r+=v[i];

	l=v[N-K];
	r=r/K+1;
	while(r-l>1)
	{
		mid=l+((r-l)>>1);
		if(doable(mid))
			l=mid;
		else
			r=mid;
	}

	fprintf(g, "%lld", l);

	fclose(f);
	fclose(g);
	return 0;
}