제출 #1231467

#제출 시각아이디문제언어결과실행 시간메모리
1231467omsincoconutEvent Hopping (BOI22_events)C++17
0 / 100
33 ms3396 KiB
#include <bits/stdc++.h>

using namespace std;
const int INF = 1e9;

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

    int N, Q;
    cin >> N >> Q;

    vector<int> S(N+1), E(N+1);
    for (int i = 1; i <= N; i++) cin >> S[i] >> E[i];

    int ord[N+1];
    iota(ord+1, ord+N+1, 1);
    sort(ord+1, ord+N+1, [&E, &S](int a, int b) {return (E[a] > E[b]) || (E[a] == E[b] && S[a] > S[b]);});

    int iord[N+1];
    for (int i = 1; i <= N; i++) iord[ord[i]] = i;

    int qc[N+1];
    qc[1] = 0;
    for (int i = 2; i <= N; i++) {
        qc[i] = qc[i-1] + (S[ord[i-1]] <= E[ord[i]] && E[ord[i]] <= E[ord[i-1]]);
    }

    while (Q--) {
        int s, e;
        cin >> s >> e;

        int is = iord[s], ie = iord[e];
        if (is == ie) cout << 0 << "\n";
        else if (E[s] == E[e]) cout << 1 << "\n";
        else if (is < ie) cout << "impossible\n";
        else if (qc[is] - qc[ie] < is-ie) cout << "impossible\n";
        else cout << is-ie << "\n";
    }


    return 0;
}

/*
5 2
1 3
2 4
4 7
7 9
3 7
1 4
3 2
*/

/*
8 5
1 2
3 4
1 5
6 7
5 10
10 20
15 20
999999999 1000000000
1 6
1 7
2 4
3 3
5 8
*/

/*
3 9
1 2
2 3
3 4
1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
3 3
*/
#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...