Submission #1005305

#TimeUsernameProblemLanguageResultExecution timeMemory
1005305MohamedFaresNebiliAbracadabra (CEOI22_abracadabra)C++14
10 / 100
3065 ms20528 KiB
#include <bits/stdc++.h>

        using namespace std;

        int N, Q;
        vector<int> A;
        vector<array<int, 3>> query;
        int ans[1000005];

        int32_t main() {
            ios_base::sync_with_stdio(0);
            cin.tie(0); cout.tie(0);
            cin >> N >> Q; A.resize(N);
            for(int l = 0; l < N; l++)
                cin >> A[l];
            for(int l = 0; l < Q; l++) {
                int t, i; cin >> t >> i;
                query.push_back({t, l, --i});
            }
            sort(query.begin(), query.end());
            bool ok = false; int cur = 0, cnt = 1;
            while(cur < Q && query[cur][0] == 0) {
                ans[query[cur][1]] = A[query[cur][2]];
                cur++;
            }
            while(!ok) {
                ok = true;
                vector<int> B;
                int i = 0, j = N / 2;
                while(B.size() < N) {
                    if(i == N / 2)
                        B.push_back(A[j++]);
                    else if(j == N) B.push_back(A[i++]);
                    else {
                        if(A[i] < A[j])
                            B.push_back(A[i++]);
                        else {
                            B.push_back(A[j++]);
                            ok = false;
                        }
                    }
                }
                swap(A, B);
                while(cur < Q && (query[cur][0] == cnt || ok == true)) {
                    ans[query[cur][1]] = A[query[cur][2]];
                    cur++;
                }
                cnt++;
            }
            for(int l = 0; l < Q; l++)
                cout << ans[l] << "\n";
            return 0;
        }






Compilation message (stderr)

Main.cpp: In function 'int32_t main()':
Main.cpp:30:32: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   30 |                 while(B.size() < N) {
      |                       ~~~~~~~~~^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...