Cod sursa(job #66265)

Utilizator vrajalaMihai Viteazu, razboinicu luminii vrajala Data 17 iunie 2007 11:43:59
Problema Grupuri Scor 38
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <stdio.h>
#define Nmax 100001

int N,S,K,a[Nmax],Gmax,p,rez,i;

int incearca(long long nr)
{
int i;
long long s2=0;
for (i=1;i<=N,s2<nr*K;++i)
    if (a[i]<nr) s2+=a[i];
       else
           {
           s2+=(N-i+1)*nr;
           break;
           }
if (s2>=nr*K) return 1;
   else return 0;
}

int main()
{
 freopen("grupuri.in","r",stdin);
 scanf("%d %d",&K,&N);
 for (i=1;i<=N;++i)
     {
     scanf("%d",&a[i]);
     S+=a[i];
     }
 fclose(stdin);
 Gmax=S/K;
 p=1;
 while (p<=Gmax)
       p = p << 1;
 p = p >> 1;
 while (p>=1)
       {
       if (incearca(rez+p)) rez+=p;
       p = p >> 1;
       }
 freopen("grupuri.out","w",stdout);
 printf("%d",rez);
 fclose(stdout);
 return 0;
}