Submission #1262906

#TimeUsernameProblemLanguageResultExecution timeMemory
1262906s3rena_ccIntercastellar (JOI22_ho_t1)C++20
100 / 100
40 ms6980 KiB
#include <iostream>
#include <vector>
using namespace std;
#define ll long long

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    ll n; 
    cin >> n;

    vector<ll> arr(n);
    vector<ll> finalPosOfSeg(n);
    ll currPos = 0;

    for (ll i = 0; i < n; i++) {
        cin >> arr[i];
        ll cnt = 0;
        while (arr[i] % 2 == 0) { // keep dividing until odd
            cnt++;
            arr[i] /= 2;
        }
        currPos += (1LL << cnt); // use bit shift instead of pow
        finalPosOfSeg[i] = currPos - 1;
    }

    ll q; 
    cin >> q;
    vector<ll> xs(q);
    for (ll i = 0; i < q; i++) {
        cin >> xs[i];
    }

    ll l = 0;
    for (ll i = 0; i < q; i++) {
        ll x = xs[i] - 1; // convert to 0-index
        while (finalPosOfSeg[l] < x) {
            l++;
        }
        cout << arr[l] << "\n";
    }

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...