Cod sursa(job #428168)

Utilizator mihaismolenskiMihai Smolenski mihaismolenski Data 28 martie 2010 22:18:18
Problema Grupuri Scor 2
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <stdio.h>
#define INFILE "grupuri.in"
#define OUTFILE "grupuri.out"
FILE * fin=fopen (INFILE, "rt");
FILE * fout=fopen (OUTFILE, "wt");

void citire ();
void binara ();
void afisare ();
int verificare (long long int x);
int k, n, v[100001], MAX;
long long int s[100001];

int main ()
{

citire ();
binara ();
afisare ();

fclose(fin);
fclose(fout);
return 0;
}

void citire ()
	{
	int i;
	fscanf(fin, "%d %d\n", &k, &n);
	for (i=1; i<=n; i++)
		{fscanf(fin, "%d", &v[i]);
		s[i]=s[i-1]+v[i];}
	}

void binara ()
	{
	long long int st=1, dr=1000000, mij;
	while (st<=dr)
		{
		mij=(st+dr)/2;
		if (verificare(k*mij))
			st=mij+1;
			else
			dr=mij-1;
		}
	}

int verificare (long long int x)
	{
	int aux=x;
	int i=n;
	//vedem care au un numar >= cu k
	while (v[i]>=k)
		{x-=k; i--;}
	if (x<=s[i])
		{if (aux/k>MAX) MAX=aux/k;
		return 1;}
	return 0;
	}

void afisare ()
	{fprintf(fout, "%d\n", MAX);}