Pagini recente » Cod sursa (job #2576179) | Cod sursa (job #2641515) | Cod sursa (job #3143874) | Cod sursa (job #292163) | Cod sursa (job #428168)
Cod sursa(job #428168)
#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);}