#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
int n;
cin >> n;
vector<pair<int, int>> a(n);
for (int i = 0; i < n; ++i) {
cin >> a[i].first >> a[i].second;
}
vector<vector<int>> g(n);
for (int i = 0; i < n; ++i) {
for (int j = i + 1; j < n; ++j) {
auto [x1, y1] = a[i];
auto [x2, y2] = a[j];
if (x1 > x2) {
swap(x1, x2);
swap(y1, y2);
}
if (x2 < y1 && y1 < y2) {
g[i].push_back(j);
g[j].push_back(i);
}
}
}
vector<int> vis(n, 0);
int ans = 0, ok = 1;
function<void(int, int)> dfs = [&] (int x, int p) {
vis[x] = 1;
for (auto y: g[x]) {
if (vis[y] && y != p) {
ok = 0;
return;
}
if (!vis[y]) {
dfs(y, x);
}
}
};
for (int i = 0; i < n; ++i) {
if (!vis[i]) {
dfs(i, -1);
ans++;
}
}
for (int i = 0; i < ans; ++i) {
ok = (ok + ok) % 1000000007;
}
cout << ok << '\n';
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |