답안 #1036769

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1036769 2024-07-27T16:41:47 Z vjudge1 Abracadabra (CEOI22_abracadabra) C++17
0 / 100
180 ms 64380 KB
#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;
        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();
                }
            }
        }
    }

    _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

Main.cpp: In function 'void solve()':
Main.cpp:75: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]
   75 |         while (c.size() != n)
      |                ~~~~~~~~~^~~~
Main.cpp:78: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]
   78 |                 if(b.size() == n/2){
      |                    ~~~~~~~~~^~~~~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 140 ms 45696 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 180 ms 64380 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 30 ms 11588 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 140 ms 45696 KB Output isn't correct
2 Halted 0 ms 0 KB -