Submission #784424

#TimeUsernameProblemLanguageResultExecution timeMemory
784424gun_ganIntercastellar (JOI22_ho_t1)C++17
100 / 100
77 ms8472 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

const int MX = 2e5 + 5;

int N, Q;
int a[MX];

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

      cin >> N;
      for(int i = 0; i < N; i++) cin >> a[i];

      reverse(a, a + N);

      vector<pair<ll, ll>> b;
      for(int i = 0; i < N; i++) {
            int k = a[i];
            while(!(k % 2)) k /= 2;

            b.push_back({a[i] / k, k});
      }

      reverse(b.begin(), b.end());

      ll sum = 0;
      for(auto &[cnt, x] : b) {
            sum += cnt;
            cnt = sum;
      }

      cin >> Q;
      for(int i = 1; i <= Q; i++) {
            ll x;
            cin >> x;

            int l = 0, r = (int) b.size() - 1, res = 0;
            while(l <= r) {
                  int mid = (l + r) >> 1;

                  if(b[mid].first >= x) {
                        res = mid, r = mid - 1;
                  } else {
                        l = mid + 1;
                  }
            }

            cout << b[res].second << '\n';
      }
      
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...