Submission #646115

#TimeUsernameProblemLanguageResultExecution timeMemory
646115PagodePaivaIntercastellar (JOI22_ho_t1)C++14
100 / 100
89 ms11100 KiB
#include<bits/stdc++.h>
#define int long long 
#define ms(v) memset(v, -1, sizeof v)
#define pi pair<int, int>
#define pb push_back
#define fr first
#define sc second
#define srt(v) sort(v.begin(), v.end())
#define INF 1e15

using namespace std;

int n;
vector <pair <pi, int>> v;

void buscab(int x){
	int l = 0, r = v.size()-1;
	int res = -1;
	while(l <= r){
		int mid = (l+r) >> 1;
		if(v[mid].fr.fr <= x and x <= v[mid].fr.sc){
			res = mid;
			break;
		}
		else if(v[mid].fr.sc < x){
			l = mid+1;
		}
		else{
			r = mid;
		}
	}

	cout << v[res].sc << "\n";

	return;
}

int32_t main(){
	ios::sync_with_stdio(false); cin.tie(0);
	
	cin >> n;

	int st = 1;

	for(int i = 1;i <= n;i++){
		int x;
		cin >> x;
		int con = 1;
		while(x % 2 == 0){
			x /= 2;
			con *= 2;
		}

		v.pb({{st, st + con - 1}, x});

		st = st + con;
	}

	int q;
	cin >> q;

	for(int i = 1;i <= q;i++){
		int x;
		cin >> x;
		buscab(x);
	}

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