#include <iostream>
#include <vector>
#include <set>
#include <algorithm>
using namespace std;
int Mx[1<<21];
int main(){
int n, Ans = 1, mod = 1e9 + 7;
cin>>n;
vector<pair<int, int>> vec;
for (int i=1, a, b;i<=n;i++){
cin>>a>>b;
vec.push_back({a, b});
}
sort(begin(vec), end(vec));
set<int> R;
for (auto [l, r] : vec){
auto u = R.upper_bound(r);
if (u != begin(R))
Mx[r] = *prev(u);
if (Mx[r] > l)
n--;
if (Mx[r] != 0 and Mx[Mx[r]] > l)
Ans = 0;
R.insert(r);
}
while (n >= 30)
Ans = (1LL * Ans + (1<<30)) % mod, n -= 30;
cout<<1LL * Ans * (1<<n) % mod<<'\n';
}
| # | 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... |