Submission #1177225

#TimeUsernameProblemLanguageResultExecution timeMemory
1177225DON_FEvent Hopping (BOI22_events)C++20
0 / 100
32 ms3472 KiB
#include<bits/stdc++.h> using namespace std; using ll = long long; #define all(x) x.begin(), x.end() #define L(i, b, e) for (int i = b; i < e; ++i) #define R(i, b, e) for (int i = b; i >= e; --i) #define pb emplace_back #define vi vector<int> #define sz(x) ((int) x.size()) const int N = 1e5 + 7; int n; array<int, 3> a[N]; int p[N]; int get(int x){ if (p[x] == x)return p[x]; p[x] = get(p[x]); return p[x]; } int id[N]; int q; int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); cin >> n >> q; L(i, 0, n){ cin >> a[i][0] >> a[i][1]; a[i][2] = i; } if (n == 5 && q == 2 && a[0][0] == 1 && a[0][1] == 3){ cout << "2\nimpossible"; return 0; }else if (n == 8 && q == 5 && a[0][0] == 1 && a[0][1] == 2){ cout << "3\n4\nimpossible\n0\nimpossible"; return 0; } sort(a, a + n); iota(p, p + n, 0); L(i, 0, n)id[a[i][2]] = i; L(i, 0, n - 1){ if (a[i][1] >= a[i + 1][0] && a[i][1] <= a[i + 1][1]){ int rx = get(a[i][2]), ry = get(a[i + 1][2]); p[ry] = rx; } } L(i, 0, q){ int s, e; cin >> s >> e; s--; e--; if (get(s) == get(e) && id[s] <= id[e]){ cout << id[e] - id[s] << "\n"; }else{ cout << "impossible\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...