Submission #1362034

#TimeUsernameProblemLanguageResultExecution timeMemory
1362034SulAInside information (BOI21_servers)C++20
5 / 100
160 ms2660 KiB
#include <bits/stdc++.h>
using namespace std;

const int N = 120'001;
int L[N], R[N];
const int offset = 1 << 18;
int tree[2*offset];

void update(int i, int x) {
    tree[i += offset] += x;
    while (i >>= 1)
        tree[i] = tree[2*i] + tree[2*i + 1];
}

int query(int ql, int qr, int v = 1, int l = 0, int r = offset) {
    if (ql <= l && r <= qr) return tree[v];
    if (qr < l || r < ql) return 0;
    int mid = (l+r)/2;
    return query(ql, qr, 2*v, l, mid) + query(ql, qr, 2*v+1, mid+1, r);
}

int main() {
    int n,k; cin >> n >> k;
    for (int i = 1; i <= n; i++) {
        L[i] = R[i] = i;
        update(L[i], 1);
        update(R[i] + 1, -1);
    }
    for (int _ = 0; _ < n+k-1; _++) {
        char t;
        int a,b; cin >> t;
        if (t == 'S') {
            cin >> a >> b;
            if (a > b) swap(a, b);
            update(1 + R[a], 1);
            update(L[b], -1);
            R[a] = R[b];
            L[b] = L[a];
            update(1 + R[a], -1);
            update(L[b], 1);
        } else if (t == 'Q') {
            cin >> a >> b;
            cout << (L[a] <= b && b <= R[a] ? "yes" : "no") << "\n";
        } else {
            cin >> b;
            cout << query(0, b) << "\n";
        }
    }
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...