Pagini recente » Istoria paginii utilizator/t_@lex | Statistici Cristina (Oleaginoasa) | Istoria paginii utilizator/ionutudrea | Statistici Manole Cristian (m_cristi) | Cod sursa (job #428498)
Cod sursa(job #428498)
#include<stdio.h>
#define Nmax 100000
using namespace std;
long long s,n,k,a[Nmax],b[Nmax],ss;
void citire();
long long cb(long long in,long long sf);
long long verif(long long X);
int caut_b(int in,int sf,int x);
int main()
{
freopen("grupuri.in","r",stdin);
freopen("grupuri.out","w",stdout);
citire();
if (verif(s/k)) printf("%ld",s/k);
else
{
ss=cb(1,s/k);
printf("%ld",ss);
}
return 0;
}
int caut_b(int in,int sf,int x)
{
int mij=in+(sf-in)/2;
if (a[mij]<x)
return caut_b(mij,sf,x);
return caut_b(in,mij,x);
}
long long verif(long long X)
{
long long z=0,i=n,sa=k*X;
z=caut_b(1,n,X);
if (z<=n-k) return 1;
if (b[n-z]>=sa-z*X) return 1;
return 0;
}
void citire()
{
long long i;
scanf("%ld%ld",&k,&n);
for (i=1;i<=n;++i)
{
scanf("%ld",&a[i]);
s+=a[i];
b[i]=s;
}
}
long long cb(long long in,long long sf)
{
long long mij,ok1;//in=1,sf=s/k;
mij=in+(sf-in)/2;
ok1=verif(mij);
if (ok1)
return cb(mij,sf);
return cb(in,mij);
return in;
}