Submission #1036773

#TimeUsernameProblemLanguageResultExecution timeMemory
1036773HorizonWestAbracadabra (CEOI22_abracadabra)C++17
10 / 100
3062 ms57528 KiB
#include <iostream> #include <complex> #include <iomanip> #include <vector> #include <algorithm> #include <functional> #include <bitset> #include <queue> #include <map> #include <stack> #include <cmath> #include <cstdint> using namespace std; #define endl '\n' #define db double #define ll __int128 #define int long long #define pb push_back #define fs first #define sd second #define Mod long(1e9 + 7) #define all(x) x.begin(), x.end() #define unvisited long(-1) #define Eps double(1e-9) #define _for(i, n) for(int i = 0; i < (n); i++) #define dbg(x) cout << #x ": " << x << endl; const int Max = 1e6 + 7, Inf = 1e9 + 7; void print(bool x) { cout << (x ? "YES" : "NO") << endl; } string tostring (__int128 x) { string ans = ""; while(x > 0) { ans += (x % 10 + '0'); x /= 10; } reverse(all(ans)); return ans; } void solve() { int n, q; cin >> n >> q; vector <int> v(n), ans(q, -1); for(auto& u : v) cin >> u; vector <vector<int>> f(n + 1, vector <int> ()); vector <pair<int, int>> s(q); for(int i = 0; i < q; i++){ cin >> s[i].fs >> s[i].sd; s[i].sd--; if(s[i].fs <= n){ f[s[i].fs].push_back(i); } } _for(i, Inf) { for(auto& u : f[i]){ ans[u] = v[s[u].sd]; } vector <int> a, b, c; _for(j, n/2){ a.push_back(v[j]); b.push_back(v[j+n/2]); } reverse(all(a)); reverse(all(b)); while (c.size() != n) { if(a.empty()){ if(b.size() == n/2){ i = Inf+1; } c.push_back(b.back()); b.pop_back(); }else if(b.empty()){ c.push_back(a.back()); a.pop_back(); }else { if(a.back() < b.back()){ c.push_back(a.back()); a.pop_back(); }else{ c.push_back(b.back()); b.pop_back(); } } } swap(c, v); } _for(i, q) { if(ans[i] == -1){ ans[i] = v[s[i].sd]; } cout << ans[i] << endl; } } int32_t main() { ios_base::sync_with_stdio(0); cin.tie(0); int Q = 1; //cin >> Q; while (Q--) { solve(); } return 0; }

Compilation message (stderr)

Main.cpp: In function 'void solve()':
Main.cpp:77:25: warning: comparison of integer expressions of different signedness: 'std::vector<long long int>::size_type' {aka 'long unsigned int'} and 'long long int' [-Wsign-compare]
   77 |         while (c.size() != n)
      |                ~~~~~~~~~^~~~
Main.cpp:80:29: warning: comparison of integer expressions of different signedness: 'std::vector<long long int>::size_type' {aka 'long unsigned int'} and 'long long int' [-Wsign-compare]
   80 |                 if(b.size() == n/2){
      |                    ~~~~~~~~~^~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...