Submission #988864

#TimeUsernameProblemLanguageResultExecution timeMemory
988864vjudge2Port Facility (JOI17_port_facility)C++17
0 / 100
0 ms348 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long

const int mod = 1000000007;

int bm(int b, int pw) {
    if (!pw) return 1;
    int res = bm(b, pw / 2);
    res = res * res % mod;
    if (pw % 2 == 1) res = res * b % mod;
    return res;
}

int p[1000001];

int find(int u) {
    return p[u] == u ? u : p[u] = find(p[u]);
}

int32_t main() {
    ios::sync_with_stdio(0); cin.tie(0);
    int n, cnt = 0;
    cin >> n;
    vector<pair<int, int>> a(n);
    vector<int> compo(n, 0);
    for (int i = 0; i < n; i++) p[i] = i;
    for (auto& [x, y] : a) cin >> x >> y;
    sort(a.begin(), a.end());
    for (int i = 0; i < n; i++) {
        for (int j = i + 1; j < n; j++) {
            if (a[j].first < a[i].second && a[i].second < a[j].second) {
                if (find(i) != find(j)) p[find(j)] = find(i);
                else return cout << "0\n", 0;
            }
        }
    }
    for (int i = 0; i < n; i++) compo[find(i)] = 1;
    for (int i = 0; i < n; i++) cnt += compo[i];
    cout << bm(2, 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...