제출 #803292

#제출 시각아이디문제언어결과실행 시간메모리
803292luciIntercastellar (JOI22_ho_t1)C++17
25 / 100
265 ms5408 KiB
#include<bits/stdc++.h>
using namespace std;
#define ioss ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0)
#define int long long
#define tup tuple<int, int, int>
#define pii pair<int, int>
#define fi first
#define se second
#define pub push_back
#define pob pop_back
int n, arr[200004], q;
signed main() {
    ioss;
    cin >> n;
    vector<pii> range(n+2);
    for(int i = 1; i <= n; i++) {
        cin >> arr[i];
        int cnt = 0;
        for(int j = 0; j < 30; j++) {
            if(arr[i]%(1ll << j) == 0) cnt = (1ll << j);
            else {
                arr[i] = arr[i]/(1ll << (j-1));
                break;
            }
        }
        range[i] = {range[i-1].se+1, range[i-1].se+cnt};
    }
    cin >> q;
    for(int i = 1; i <= q; i++) {
        int x; cin >> x;
        
        int l = 1, r = n, ret = 0;
        while(l <= r) {
            int mid = (l+r)/2;
            auto [left, right] = range[mid];
            if(x >= left && x <= right) {
                ret = mid;
                break;
            }
            if(x < left) r = mid-1;
            else l = mid+1;
        }
        cout << arr[ret] << endl;
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...