Cod sursa(job #1637297)

Utilizator costyv87Vlad Costin costyv87 Data 7 martie 2016 16:21:14
Problema Ciuperci Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <cstdio>
#include <vector>
#define ll (long long)
FILE *f,*g;

int q,n=55;
long long v[60];

void pre()
{
    v[1] = 1;
    for (int i = 2;i <= n;i++)
        v[i] = ll v[i-1]<<1;
}

long long solve(long long value)
{
    int left, right, mid, ans;
    left = 1; right = n;

    while (left<=right)
    {
        mid = (left+right)>>1;
        if (v[mid] > value)
        {
            right = mid-1;
        }
        else
        {
            ans = mid;
            left = mid+1;
        }
    }

    return v[ans];
}


int main()
{
    f=fopen("ciuperci.in","r");
    g=fopen("ciuperci.out","w");

    pre();
    fscanf(f,"%d",&q);

    while (q--)
    {
        long long x;
        fscanf(f,"%lld",&x);
        fprintf(g,"%lld\n",solve(x));
    }

    fclose(g);
    return 0;
}