Cod sursa(job #66267)

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

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

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("%lld",rez);
 fclose(stdout);
 return 0;
}