Submission #846419

#TimeUsernameProblemLanguageResultExecution timeMemory
846419vjudge1OGLEDALA (COI15_ogledala)C++17
19 / 100
201 ms51480 KiB
#include <iostream> #include <bits/stdc++.h> using namespace std; #define MOD 1000000007 #define ll long long #define pri pair<int,int> #define prl pair<ll,ll> #define vi vector<int> #define vl vector<ll> #define vp vector<pair<int,int>> #define vpl vector<pair<ll,ll>> #define re return 0 #define sqrt sqrtl struct segment { int l; int r; }; inline bool operator<(const segment& lhs, const segment& rhs) { if (lhs.r-lhs.l == rhs.r-rhs.l) return lhs.l<rhs.l; return lhs.r-lhs.l > rhs.r-rhs.l; } int32_t main() { int m,n,q;cin>>m>>n>>q; vi a(n);for (int i = 0;i<n;i++) cin>>a[i]; a.push_back(m+1); int l = 0; set<segment> pq; for (int i = 0;i<n+1;i++) { pq.insert(segment{l+1,a[i]-1}); l=a[i]; } deque<int> queries(q); for(int i = 0;i<q;i++) cin>>queries[i]; int qc = 0; int c = n+1; while (1) { int f = queries[0]; if (f<n+1) cout<<a[f-1]<<endl; else break; queries.pop_front(); } while (qc<queries.size()) { auto f = *pq.begin(); pq.erase(pq.begin()); int curr; if ((f.r-f.l)%2) { if (f.r+2 == f.l) { pq.insert({f.l + 1,f.l+1}); curr = f.l; } else { pq.insert({f.l, (f.r+f.l)/2-1}); pq.insert({(f.r+f.l)/2+1,f.r}); curr = (f.r+f.l)/2; } } else { if (f.r!=f.l) { pq.insert({f.l,(f.l+f.r)/2-1}); pq.insert({(f.l+f.r)/2+1,f.r}); curr = (f.l+f.r)/2; } else curr = f.l; } if (c==queries[qc]) { cout<<curr<<endl; qc++; c++; } else {c++;} } return 0; }

Compilation message (stderr)

ogledala.cpp: In function 'int32_t main()':
ogledala.cpp:45:14: warning: comparison of integer expressions of different signedness: 'int' and 'std::deque<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   45 |     while (qc<queries.size()) {
      |            ~~^~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...