제출 #846253

#제출 시각아이디문제언어결과실행 시간메모리
846253vjudge1OGLEDALA (COI15_ogledala)C++17
41 / 100
2094 ms37156 KiB
#pragma GCC optimize("O3,unroll-loops") #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") #include <bits/stdc++.h> using namespace std; #define int long long #define ONLINE_JUDGE #ifndef ONLINE_JUDGE #define OPEN freopen(".in", "r", stdin); \ freopen(".out", "w", stdout); #else #define OPEN void(23); #endif void solve() { int n, m, q; cin >> n >> m >> q; vector <int> vec(m +2); for(int i = 1; i <= m; i++) cin >> vec[i]; vec[0] = 0; vec[m +1] = n +1; vector <int> anss; for(int i = 1; i <= m; i++) anss.emplace_back(vec[i]); priority_queue <tuple <int, int, int>> pq; for(int i = 1; i <= m +1; i++) { pq.emplace((vec[i] -1) - (vec[i -1] +1) +1, -(vec[i -1] +1), -(vec[i] -1)); } while(!pq.empty() && anss.size() <= 300000) { auto [diff, l, r] = pq.top(); l *= -1; r *= -1; cerr << diff << " " << l << " " << r << "\n"; pq.pop(); int mid = (r + l) / 2; anss.emplace_back((r + l) / 2); if(l <= mid -1) pq.emplace(((mid -1) - l +1), -l, -(mid -1)); if(mid +1 <= r) pq.emplace((r - (mid +1) +1), -(mid +1), -r); } //for(int &i : anss) cout << i << " "; for(int i = 1; i <= q; i++) { int x; cin >> x; cout << anss[x -1] << "\n"; } return; } int32_t main() { OPEN; ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int t = 1; //cin >> t; while(t--) { solve(); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...