제출 #720580

#제출 시각아이디문제언어결과실행 시간메모리
720580JohannInside information (BOI21_servers)C++14
10 / 100
84 ms5028 KiB
#include <bits/stdc++.h>
using namespace std;

#define ll long long
#define pii pair<int,int>
#define vb vector<bool>
#define vi vector<int>
#define vpii vector<pii>
#define vvb vector<vb>
#define vvi vector<vi>
#define vvpii vector<vpii>

void dfs(vvpii & adj, int v, int t, int source, vvb & reachable) {
    reachable[source][v] = true;
    for (pii e : adj[v]) {
        if (e.second < t) dfs(adj, e.first, e.second, source, reachable);
    }
}

int lowerbound(vpii & borders, int l, int r, int d) {
    while (l < r) {
        int m = (l + r) / 2;
        if (borders[m].second >= d) r = m;
        else l = m+1;
    }
    return l;
}
int otherbound(vpii & borders, int l, int r, int d) {
    while (l < r) {
        int m = (l + r + 1) / 2;
        if (borders[m].first <= d) l = m;
        else r = m-1;
    }
    return l;
}
int main() {
    ios::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);

    int N, K;
    cin >> N >> K;
    vpii borders(N);
    for (int i = 0; i < N; ++i) borders[i] = { i , i };
    for (int t = 1; t < N + K; ++t) {
        string command;
        cin >> command;
        if (command == "S") {
            int a, b;
            cin >> a >> b;
            --a; --b;
            if ( b < a ) swap(a, b);
            borders[a].second = borders[b].second;
            borders[b].first = borders[a].first;
        } else if (command == "Q") {
            int a,d;
            cin >> a >> d;
            --a; --d;
            if (borders[a].first <= d && d <= borders[a].second) cout << "yes\n";
            else cout << "no\n";
        } else {
            int d;
            cin >> d;
            --d;
            int l = lowerbound(borders, 0, d, d);
            int r = otherbound(borders, d, N-1, d);
            int cnt = r - l + 1;
            cout << cnt << "\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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...