This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#pragma GCC optimize("O3","inline")
#include <bits/stdc++.h>
using namespace std;
#define all(v) v.begin(),v.end()
#define ins insert
#define pb push_back
#define int long long
#define pii pair<int,int>
#define endl '\n'
#define drop(x) cout<<(x)<<endl;return;
#define reach cerr<<"reached >.<!"<<endl;
/*
m : 11059739 -> l ~23
p : 4567896467
*/
// mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
const int mod = 1e9 +7, sze=2e5 +5,inf=LLONG_MAX, prime = 2333;
//\\
:pepeblacklove: :dp/st/sp/bs/gr: :pepeblacklove:
//
void gkd(){
int n;
cin>>n;
vector<int> arr(n+1);
for(int i=0;i<n;i++){
cin>>arr[i+1];
}
int q;cin>>q;
int last = 0;
int i =1;
while(q--){
int x;
cin>>x;
int ans=0;
while(last<=x){
int ihave = (arr[i]%2?1:0);
if(!ihave){
int l = 1;
int r = 30;
int bolgu=0;
while(l<=r){
int mid = (l+r)/2;
// cout<<arr[i]<< " "<<(1<<mid)<<endl;
if(arr[i]% ( 1<<mid ) ==0){
bolgu = (1<<mid);
l=mid+1;
}
else{
r=mid-1;
}
}
ihave = bolgu;
}
// cout<<last<<" "<<ihave<<endl;
if(last+ihave<x){
last+=ihave;
i++;
}
else{
// cout<<arr[i]<< " "<<ihave<<endl;
ans = arr[i]/ihave;
break;
}
}
cout<<ans<<endl;
}
}
signed main(){
cin.tie(0)->sync_with_stdio(0);
int tt=1;
// cin>>tt;
while(tt--) gkd();
return 0;
}
Compilation message (stderr)
Main.cpp:19:1: warning: multi-line comment [-Wcomment]
19 | //\\
| ^
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |