Submission #846384

#TimeUsernameProblemLanguageResultExecution timeMemory
846384vjudge1OGLEDALA (COI15_ogledala)C++17
19 / 100
62 ms524288 KiB
#include<bits/stdc++.h> using namespace std; using ll = long long; using ld = long double; #define pb push_back #define endl '\n' #define fi first #define se second #define fio ios_base::sync_with_stdio(false);cin.tie(NULL); #define CDIV(a,b) (((a)+(b)-(1))/(b)) const ll inf = 1e17 + 5; const ll mod = 1e9 + 7; const ll N = 3e5 + 30; int mod_(int a, int b) { if(a >= 0)return a % b; a += (-a/b + 1) * b; return a % b; } void solve() { int m, n, q; cin >> m >> n >> q; int last = 1; set<array<int, 3> >s; vector<int>ans(m + 1); for(int i = 0; i < n; ++i) { int r; cin >> r; s.insert({-(r - last), last, r - 1}); last = r + 1; ans[i + 1] = r; } if(last <= m)s.insert({-(m - last + 1),last, m}); for(int i = n + 1; i <= m; ++i) { //cout << i << ' '; array<int, 3> a = *s.begin(); a[0] = -a[0]; //for(int j : a)cout << j << ' '; s.erase(s.begin()); ans[i] = (a[2] + a[1])/2; //cout << " ans : " << ans[i] << endl; if(a[0] > 2) { s.insert({-(ans[i] - a[1]), a[1], ans[i] - 1}); s.insert({-(a[2] - ans[i]), ans[i] + 1, a[2]}); } else if(a[0] == 2) { s.insert({-(a[2] - ans[i]), ans[i] + 1, a[2]}); } } while(q--) { int idx; cin >> idx; cout << ans[idx] << endl; } } int main() { fio; //nt t; cin >> t; while(t--) { solve(); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...