Cod sursa(job #345529)

Utilizator tamas_iuliaTamas Iulia tamas_iulia Data 3 septembrie 2009 15:00:15
Problema Grupuri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <stdio.h>
#define Nmax 100005
#define ll long 

ll n,k,i;
ll a[Nmax];//,p[Nmax];
ll s;

ll merge( ll x){
	ll i,j=1,ok,y,s=0;
   for(i=1;i<=n;++i) s+= x > a[i] ? x : a[i];
 /*  ok=1;
   for(i=1;i<=k && ok;i++){
   	y=x;
   	while( y>0 && j<=n ){
      	if(p[j] > y) p[j]-=y,y=0;
         else y-=p[j],j++;
      }
      if(y>0) ok=0;
   }
   return ok;   */
   return s >= x*k;
}

ll caut_bin(ll l, ll r){
	ll m,rez=0;
   while(l<=r){
   	m=l+(r-l)/2;
      if( merge(m) ){
      	rez=m;
         l=m+1;
      }
      else r=m-1;
   }
   return rez;
}

int main(){
	freopen("grupuri.in","r",stdin);
   freopen("grupuri.out","w",stdout);
   scanf("%lld%lld",&k,&n);
	for(i=1;i<=n;++i) scanf("%lld",&a[i]), s+=a[i];

   printf("%lld\n",caut_bin(0,(ll) s/k));
   fclose(stdin); fclose(stdout);
   return 0;
}