제출 #593533

#제출 시각아이디문제언어결과실행 시간메모리
593533welleythIntercastellar (JOI22_ho_t1)C++17
100 / 100
74 ms13956 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace __gnu_pbds; using namespace std; #define int long long #define mp make_pair #define pb push_back #pragma GCC optimize("Ofast") #pragma GCC optimize("unroll-loops") #pragma GCC target("avx2") constexpr int INF = (int)2e9; constexpr int N = (int)4e5 + 111; constexpr int md = (int)1e9+7; constexpr int mdPower = (int)1e9+7 - 1; constexpr double eps = 1e-7; typedef __int128 _uint; typedef long long ll; mt19937_64 rnd(time(nullptr)); void add(int& a,int b){ a += b; if(a >= md) a -= md; } void sub(int& a,int b){ a -= b; while(a < 0) a += md; } void add(__int128& a,int b){ a += b; } void sub(__int128& a,int b){ a -= b; } int bpow(int a,int b){ if(b == 0) return 1; if(b % 2 == 0){ int t = bpow(a,b>>1); return 1ll*t*t%md; } return 1ll * a*bpow(a,b-1) % md; } int inv(int a){ return bpow(a,md-2); } //int fac[N],invfac[N]; // //void init(){ // fac[0] = 1; // for(int i = 1; i < N; i++){ // fac[i] = (fac[i-1] * i) % md; // } // invfac[N-1] = inv(fac[N-1]); // for(int i = N-2; i >= 0; i--){ // invfac[i] = (invfac[i+1] * (i+1))%md; // } // return; //} // //int C(int n,int k){ // if(k > n) // return 0; // return fac[n] * invfac[k] % md * invfac[n-k] % md; //} // //int A(int n,int k){ // if(k > n) // return 0; // return fac[n] * invfac[n-k] % md; // void solve(){ int n; cin >> n; int a[n],cnt[n]; for(int i = 0; i < n; i++){ cin >> a[i]; cnt[i] = 1; while(a[i] % 2 == 0){ a[i] /= 2; cnt[i] *= 2; } } int q; cin >> q; int ans[q]; vector<pair<int,int>> v; for(int i = 0; i < q; i++){ int x; cin >> x; v.pb(mp(x,i)); } sort(v.begin(),v.end()); int p = 0; int sum = 0; for(auto&[x,id] : v){ while(sum + cnt[p] < x){ sum += cnt[p]; p++; } ans[id] = a[p]; } for(int i = 0; i < q; i++){ cout << ans[i] << "\n"; } return; } signed main(){ ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr); int tests = 1; // cin >> tests; for(int test = 1; test <= tests; test++){ // cerr << "test = " << test << "\n"; solve(); } return 0; } /** **/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...