답안 #653567

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
653567 2022-10-27T10:17:48 Z AlperenT Event Hopping (BOI22_events) C++17
0 / 100
95 ms 14212 KB
#include <bits/stdc++.h>

using namespace std;

const int N = 1e5 + 5;

int n, q, where[N], pref[N], tin[N], tout[N], tim, depth[N];

struct Event{
    int l, r;

    bool operator < (const Event &sc) const{
        if(r == sc.r) return l < sc.l;
        else return r < sc.r;
    }
};

Event arr[N];

vector<pair<Event, int>> v;

vector<int> tree[N];

void dfs(int v, int p){
    tin[v] = ++tim;
    depth[v] = depth[p] + 1;

    for(auto e : tree[v]){
        if(e != p) dfs(e, v);
    }

    tout[v] = ++tim;
}

bool isanc(int a, int b){
    return (tin[a] <= tin[b] && tout[a] >= tout[b]);
}

int main(){
    ios_base::sync_with_stdio(false);cin.tie(NULL);

    cin >> n >> q;

    for(int i = 1; i <= n; i++) cin >> arr[i].l >> arr[i].r;

    for(int i = 1; i <= n; i++) v.push_back({arr[i], i});

    sort(v.begin(), v.end());

    set<pair<int, int>> st;

    for(auto p : v){
        while(!st.empty() && prev(st.end())->first >= p.first.l){
            tree[p.second].push_back(prev(st.end())->second);

            st.erase(prev(st.end()));
        }

        st.insert({p.first.r, p.second});
    }

    dfs(v.back().second, 0);

    while(q--){
        int s, e;

        cin >> s >> e;

        if(isanc(e, s)) cout << depth[s] - depth[e] << "\n";
        else cout << "impossible\n";
    }
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 2644 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 2644 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 2644 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 2644 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 84 ms 14212 KB Output is correct
2 Correct 76 ms 14144 KB Output is correct
3 Correct 79 ms 14168 KB Output is correct
4 Incorrect 95 ms 9496 KB Output isn't correct
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 2644 KB Output isn't correct
2 Halted 0 ms 0 KB -