Codeforces Round #389 (Div. 2, Rated, Based on Technocup 2017 – Elimination Round 3), problem: (E) Santa Claus and Tangerines Solution in C/C++

#include<stdio.h>

typedef long long unsigned llu;

typedef unsigned u;

u T[1111111],n,s;

u G(u y,u x)

{

if(y<x)return 0;

u z,r=1,a=0,b=0;

for(z=y;z>=x;z>>=1,++b)r<<=1;r>>=1;

if(z+1==x)a=y&((1u<<b)-1);

return r>a?r:a;

}

u F(u x)

{

u i;llu r=0;

for(i=-1;++i<n;)r+=G(T[i],x);

return r;

}

int main()

{

u i=-1,lo=0,hi=10000001,mi;

for(scanf(“%u%u”,&n,&s);++i<n;)scanf(“%u”,T+i);

while((mi=(lo+hi)>>1)>lo)

{

if(F(mi)>=s)lo=mi;

else hi=mi;

}

printf(lo?”%u\n”:”-1\n”,lo);

return 0;

}