Submission #752039

#TimeUsernameProblemLanguageResultExecution timeMemory
752039taniakallosIntercastellar (JOI22_ho_t1)C++14
100 / 100
474 ms9388 KiB
#include <iostream>

using namespace std;


const int N = 2e5;
int n, q;
int v[N+1], exp[N+1];
long long pw[N+1];


int cb(int st, int dr, long long val) //>=
{
    while (st <= dr)
    {
        int mid = (st+dr)/2;
        if (val <= pw[mid])
            dr = mid-1;
        else
            st = mid+1;
    }
    return st;
}


int main()
{
    cin >> n;

    for (int i = 1; i <= n; i++)
        cin >> v[i];
    

    for (int i = 1; i <= n; i++)
    {
        int cop = v[i], nr = 0;
        while ((cop & 1) == 0)
        {
            cop = (cop >> 1);
            nr++;
        }
        exp[i] = nr;
    }


    for (int i = 1; i <= n; i++)
        pw[i] = 1 << exp[i];
    
    for (int i = 1; i <= n; i++)
        pw[i] += pw[i-1];
    

    cin >> q;

    for (int i = 1; i <= q; i++)
    {
        long long x;
        cin >> x;
        int p = cb(1, n, x);
        cout << (v[p] >> exp[p]) << '\n';
    }


    return 0;
}

Compilation message (stderr)

Main.cpp:8:13: warning: built-in function 'exp' declared as non-function [-Wbuiltin-declaration-mismatch]
    8 | int v[N+1], exp[N+1];
      |             ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...