Submission #43122325


Source Code Expand

//#pragma GCC optimize("Ofast,O3,unroll-loops")
//#pragma GCC target("avx,avx2")

#include <bits/stdc++.h>

using namespace std;

#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()
#define bpc(x) __builtin_popcount(x)
#define bpcll(x) __builtin_popcountll(x)
#define MP make_pair
//#define endl '\n'

mt19937 rng(chrono::high_resolution_clock::now().time_since_epoch().count());

typedef long long ll;
const int MOD = 1e9 + 7;
const int N = 1e6 + 3e2;

void solve(){
    int q;
    cin >> q;

    multiset<int> s; // blackboard
    multiset<int> v; // values

    function<void(int)> add = [&](int x){
        auto it = s.insert(x);

        int p = -1, q = -1;

        if (it != s.begin()){
            p = *prev(it);
            v.insert(p ^ x);
        }

        if (next(it) != s.end()){
            q = *next(it);
            v.insert(x ^ q);
        }

        if (p != -1 && q != -1){
            v.erase(v.find(p ^ q));
        }
    };

    function<void(int)> del = [&](int x){
        auto it = s.find(x);

        int p = -1, q = -1;

        if (it != s.begin()){
            p = *prev(it);
            v.erase(v.find(p ^ x));
        }

        if (next(it) != s.end()){
            q = *next(it);
            v.erase(v.find(x ^ q));
        }

        if (p != -1 && q != -1){
            v.insert(p ^ q);
        }

        s.erase(it);
    };

    while (q--){
        int t;
        cin >> t;
        if (t != 3){
            int x;
            cin >> x;
            if (t == 1) {
                add(x);
            } else {
                del(x);
            }
        } else {
            cout << *v.begin() << "\n";
        }
    }

}

int main(){
    clock_t startTime = clock();
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);

#ifdef LOCAL
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
#endif

    int test_cases = 1;
//    cin >> test_cases;

    for (int test = 1; test <= test_cases; test++){
        //cout << (solve() ? "YES" : "NO") << endl;
        solve();
    }

#ifdef LOCAL
    cerr << "Time: " << int((double) (clock() - startTime) / CLOCKS_PER_SEC * 1000) << " ms" << endl;
#endif

    return 0;
}

Submission Info

Submission Time
Task G - Minimum Xor Pair Query
User dxz05
Language C++ (GCC 9.2.1)
Score 600
Code Size 2346 Byte
Status AC
Exec Time 610 ms
Memory 31744 KiB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:89:13: warning: unused variable ‘startTime’ [-Wunused-variable]
   89 |     clock_t startTime = clock();
      |             ^~~~~~~~~

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 600 / 600
Status
AC × 1
AC × 25
Set Name Test Cases
Sample 00_sample_01.txt
All 00_sample_01.txt, 01_test_01.txt, 01_test_02.txt, 01_test_03.txt, 01_test_04.txt, 01_test_05.txt, 01_test_06.txt, 01_test_07.txt, 01_test_08.txt, 01_test_09.txt, 01_test_10.txt, 01_test_11.txt, 01_test_12.txt, 01_test_13.txt, 01_test_14.txt, 01_test_15.txt, 01_test_16.txt, 01_test_17.txt, 01_test_18.txt, 01_test_19.txt, 01_test_20.txt, 01_test_21.txt, 01_test_22.txt, 01_test_23.txt, 01_test_24.txt
Case Name Status Exec Time Memory
00_sample_01.txt AC 10 ms 3604 KiB
01_test_01.txt AC 366 ms 22272 KiB
01_test_02.txt AC 350 ms 22328 KiB
01_test_03.txt AC 361 ms 22352 KiB
01_test_04.txt AC 375 ms 22284 KiB
01_test_05.txt AC 346 ms 22416 KiB
01_test_06.txt AC 370 ms 22228 KiB
01_test_07.txt AC 362 ms 22288 KiB
01_test_08.txt AC 366 ms 22352 KiB
01_test_09.txt AC 75 ms 3536 KiB
01_test_10.txt AC 79 ms 3656 KiB
01_test_11.txt AC 95 ms 3636 KiB
01_test_12.txt AC 94 ms 3596 KiB
01_test_13.txt AC 112 ms 3636 KiB
01_test_14.txt AC 112 ms 3628 KiB
01_test_15.txt AC 147 ms 4460 KiB
01_test_16.txt AC 146 ms 4636 KiB
01_test_17.txt AC 115 ms 17588 KiB
01_test_18.txt AC 568 ms 31744 KiB
01_test_19.txt AC 610 ms 31652 KiB
01_test_20.txt AC 249 ms 17648 KiB
01_test_21.txt AC 247 ms 17584 KiB
01_test_22.txt AC 366 ms 17664 KiB
01_test_23.txt AC 358 ms 17644 KiB
01_test_24.txt AC 41 ms 3552 KiB