제출 #784868

#제출 시각아이디문제언어결과실행 시간메모리
784868ArpenteurIntercastellar (JOI22_ho_t1)C++17
100 / 100
62 ms9284 KiB
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
using ll = long long;
using pli = pair<ll,int>;
const char el = '\n';

int main() {
  ios_base::sync_with_stdio(false), cin.tie(nullptr);
  int n;
  cin >> n;
  vector<pli> PL; // position, length
  ll cur_pos = 1LL;
  for(int i=0, a, b, div; i<n; i++) {
    cin >> a;
    b = a;
    div = 1;
    while((b&1)==0) {
      b >>= 1;
      div <<= 1;
    }
    PL.push_back({cur_pos,a/div});
    cur_pos += div;
  }
  int q;
  cin >> q;
  int pos;
  ll x;
  while(q--) {
    cin >> x;
    auto f = [&] (pli& pl) { return x>=pl.first; };
    pos = distance(PL.begin(),
        partition_point(PL.begin(),PL.end(),f));
    pos--;
    cout << PL[pos].second << el;
  }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...