Submission #1157849

#TimeUsernameProblemLanguageResultExecution timeMemory
1157849Doncho_BonbonchoOGLEDALA (COI15_ogledala)C++20
19 / 100
86 ms19468 KiB
#include <bits/stdc++.h> #include <iostream> #include <random> #include <utility> #include <variant> #include <vector> using namespace std; #ifndef LOCAL #define cerr if(false) cerr #endif #define out( x ) #x << " = " << x << " " #define endl "\n" template<class T, class T2> inline bool chkmax(T &x, const T2 &y) { return x < y ? x = y, 1 : 0; } template<class T, class T2> inline bool chkmin(T &x, const T2 &y) { return x > y ? x = y, 1 : 0; } typedef long long ll; const ll mod = 1e9 +7; const int MAX_N = 1e6 + 42; struct cmp { bool operator()(const std::pair<ll, int>& a, const std::pair<ll, int>& b) const { if(a.first != b.first) return a.first < b.first; return a.second > b.second; } }; int main(){ #ifndef LOCAL std::ios_base::sync_with_stdio( false ); std::cin.tie( NULL ); std::cout.tie( NULL ); #endif ll m, n, q; std::cin >> m >> n >> q; std::vector< int > a( n+2 ); for( int i=1 ; i <= n ; i++ ) std::cin >> a[i]; a[n+1] = m+1; std::set<std::pair< ll, int >, cmp > dist; for( int i=1 ; i <= n+1 ; i++ ){ ll currDist = a[i] - a[i-1]; dist.insert({ currDist-1, a[i-1] + 1 }); } std::vector< ll > b( q ); for( auto& j : b ) std::cin >> j; int ind = 0; while( ind < q and b[ind] <= n ) std::cout << a[ b[ind++] ] << endl; int currStep = n; while( ind < q ){ for( auto j : dist) cerr << j.first << " " << j.second << endl; cerr << endl; currStep ++; auto curr = *( dist.rbegin() ); cerr << out( curr.first ) << out( curr.second ) << out( b[ind] ) << out( currStep ) << endl; if( b[ind] == currStep ){ ll currNas = curr.second + curr.first / 2LL; if( curr.first % 2 == 0 ) currNas -= 1; std::cout << currNas << endl; ind ++; } std::pair< ll, int > A = { (curr.first-1LL)/2, curr.second }; std::pair< ll, int > B = { curr.first/2, curr.second + ( curr.first + 1LL ) /2LL }; if( A.first ) dist.insert( A ); if( B.first ) dist.insert( B ); auto it = dist.find( curr ); dist.erase( it ); } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...