#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)
Ans = Ans * 2 % mod;
if (Mx[r] > l and Mx[Mx[r]] > l)
Ans = 0;
R.insert(r);
}
cout<<Ans<<'\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... |