#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ii pair<int,int>
#define fi first
#define se second
#define endl '\n'
#define puf push_front
#define pof pop_front
#define pub push_back
#define pob pop_back
#define lb lower_bound
#define ub upper_bound
#define rep(x,s,e) for (auto x=s-(s>e);x!=e-(s>e);s<e?x++:x--)
#define all(x) (x).begin(),(x).end()
#define sz(x) (int) (x).size()
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
void rage(){
cout<<0<<endl;
exit(0);
}
const int MOD=1000000007;
int n;
ii arr[1000005];
vector<int> al[1000005];
bool col[1000005];
bool vis[1000005];
struct UFDS{
int p[1000005];
int par[1000005];
UFDS(){
rep(x,0,1000005){
p[x]=x;
par[x]=0;
}
}
ii parent(int i){
if (p[i]==i) return ii(i,0);
else{
ii temp=parent(p[i]);
if (par[i]) temp.se^=1;
tie(p[i],par[i])=temp;
return temp;
}
}
void unions(int i,int j){
ii pi=parent(i),pj=parent(j);
if (pi.fi==pj.fi){
if (pi.se==pj.se) rage();
}
else{
p[pi.fi]=pj.fi;
par[pi.fi]=pi.se^pj.se^1;
}
}
} ufds;
struct node{
vector<int> v[4000010];
const int BUF=2000005;
node (){
}
void update(int i,int j,int k){
i+=BUF,j+=BUF+1;
for (;i<j;i>>=1,j>>=1){
if (i&1){
v[i].pub(k);
i++;
}
if (j&1){
j--;
v[j].pub(k);
}
}
}
void query(int i,int k,int idx){
i+=BUF;
while (i){
for (auto &it:v[i]){
ufds.unions(it,idx);
}
while (sz(v[i])>1) v[i].pob();
i>>=1;
}
}
} root=node();
int ans=1;
int main(){
cin.tie(0);
cout.tie(0);
cin.sync_with_stdio(false);
cin>>n;
rep(x,0,n){
cin>>arr[x].fi>>arr[x].se;
}
sort(arr,arr+n,[](ii i,ii j){
return i.se<j.se;
});
rep(x,0,n){
//cout<<"arr: "<<x<<" "<<arr[x].fi<<" "<<arr[x].se<<endl;
root.query(arr[x].fi,arr[x].se,x);
root.update(arr[x].fi,arr[x].se,x);
}
rep(x,0,n) if (ufds.p[x]==x){
ans=2*ans%MOD;
}
cout<<ans<<endl;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
74 ms |
125532 KB |
Output is correct |
2 |
Correct |
84 ms |
125508 KB |
Output is correct |
3 |
Correct |
74 ms |
125452 KB |
Output is correct |
4 |
Correct |
74 ms |
125540 KB |
Output is correct |
5 |
Correct |
73 ms |
125460 KB |
Output is correct |
6 |
Correct |
70 ms |
125472 KB |
Output is correct |
7 |
Correct |
71 ms |
125456 KB |
Output is correct |
8 |
Correct |
79 ms |
125492 KB |
Output is correct |
9 |
Correct |
75 ms |
125540 KB |
Output is correct |
10 |
Correct |
72 ms |
125564 KB |
Output is correct |
11 |
Correct |
78 ms |
125468 KB |
Output is correct |
12 |
Correct |
72 ms |
125668 KB |
Output is correct |
13 |
Correct |
74 ms |
125488 KB |
Output is correct |
14 |
Correct |
70 ms |
125508 KB |
Output is correct |
15 |
Correct |
70 ms |
125508 KB |
Output is correct |
16 |
Correct |
81 ms |
125508 KB |
Output is correct |
17 |
Correct |
70 ms |
125452 KB |
Output is correct |
18 |
Correct |
82 ms |
125512 KB |
Output is correct |
19 |
Correct |
72 ms |
125512 KB |
Output is correct |
20 |
Correct |
68 ms |
125508 KB |
Output is correct |
21 |
Correct |
80 ms |
125524 KB |
Output is correct |
22 |
Correct |
83 ms |
125476 KB |
Output is correct |
23 |
Correct |
75 ms |
125508 KB |
Output is correct |
24 |
Correct |
77 ms |
125544 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
74 ms |
125532 KB |
Output is correct |
2 |
Correct |
84 ms |
125508 KB |
Output is correct |
3 |
Correct |
74 ms |
125452 KB |
Output is correct |
4 |
Correct |
74 ms |
125540 KB |
Output is correct |
5 |
Correct |
73 ms |
125460 KB |
Output is correct |
6 |
Correct |
70 ms |
125472 KB |
Output is correct |
7 |
Correct |
71 ms |
125456 KB |
Output is correct |
8 |
Correct |
79 ms |
125492 KB |
Output is correct |
9 |
Correct |
75 ms |
125540 KB |
Output is correct |
10 |
Correct |
72 ms |
125564 KB |
Output is correct |
11 |
Correct |
78 ms |
125468 KB |
Output is correct |
12 |
Correct |
72 ms |
125668 KB |
Output is correct |
13 |
Correct |
74 ms |
125488 KB |
Output is correct |
14 |
Correct |
70 ms |
125508 KB |
Output is correct |
15 |
Correct |
70 ms |
125508 KB |
Output is correct |
16 |
Correct |
81 ms |
125508 KB |
Output is correct |
17 |
Correct |
70 ms |
125452 KB |
Output is correct |
18 |
Correct |
82 ms |
125512 KB |
Output is correct |
19 |
Correct |
72 ms |
125512 KB |
Output is correct |
20 |
Correct |
68 ms |
125508 KB |
Output is correct |
21 |
Correct |
80 ms |
125524 KB |
Output is correct |
22 |
Correct |
83 ms |
125476 KB |
Output is correct |
23 |
Correct |
75 ms |
125508 KB |
Output is correct |
24 |
Correct |
77 ms |
125544 KB |
Output is correct |
25 |
Correct |
74 ms |
125736 KB |
Output is correct |
26 |
Correct |
81 ms |
125636 KB |
Output is correct |
27 |
Correct |
75 ms |
125708 KB |
Output is correct |
28 |
Correct |
73 ms |
125712 KB |
Output is correct |
29 |
Correct |
76 ms |
125832 KB |
Output is correct |
30 |
Correct |
71 ms |
125672 KB |
Output is correct |
31 |
Correct |
82 ms |
125740 KB |
Output is correct |
32 |
Correct |
75 ms |
125764 KB |
Output is correct |
33 |
Correct |
79 ms |
125508 KB |
Output is correct |
34 |
Correct |
77 ms |
125556 KB |
Output is correct |
35 |
Correct |
82 ms |
125544 KB |
Output is correct |
36 |
Correct |
74 ms |
125740 KB |
Output is correct |
37 |
Correct |
72 ms |
125536 KB |
Output is correct |
38 |
Correct |
69 ms |
125508 KB |
Output is correct |
39 |
Correct |
76 ms |
125668 KB |
Output is correct |
40 |
Correct |
75 ms |
125584 KB |
Output is correct |
41 |
Correct |
74 ms |
125764 KB |
Output is correct |
42 |
Correct |
72 ms |
125764 KB |
Output is correct |
43 |
Correct |
75 ms |
125636 KB |
Output is correct |
44 |
Correct |
72 ms |
125792 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
74 ms |
125532 KB |
Output is correct |
2 |
Correct |
84 ms |
125508 KB |
Output is correct |
3 |
Correct |
74 ms |
125452 KB |
Output is correct |
4 |
Correct |
74 ms |
125540 KB |
Output is correct |
5 |
Correct |
73 ms |
125460 KB |
Output is correct |
6 |
Correct |
70 ms |
125472 KB |
Output is correct |
7 |
Correct |
71 ms |
125456 KB |
Output is correct |
8 |
Correct |
79 ms |
125492 KB |
Output is correct |
9 |
Correct |
75 ms |
125540 KB |
Output is correct |
10 |
Correct |
72 ms |
125564 KB |
Output is correct |
11 |
Correct |
78 ms |
125468 KB |
Output is correct |
12 |
Correct |
72 ms |
125668 KB |
Output is correct |
13 |
Correct |
74 ms |
125488 KB |
Output is correct |
14 |
Correct |
70 ms |
125508 KB |
Output is correct |
15 |
Correct |
70 ms |
125508 KB |
Output is correct |
16 |
Correct |
81 ms |
125508 KB |
Output is correct |
17 |
Correct |
70 ms |
125452 KB |
Output is correct |
18 |
Correct |
82 ms |
125512 KB |
Output is correct |
19 |
Correct |
72 ms |
125512 KB |
Output is correct |
20 |
Correct |
68 ms |
125508 KB |
Output is correct |
21 |
Correct |
80 ms |
125524 KB |
Output is correct |
22 |
Correct |
83 ms |
125476 KB |
Output is correct |
23 |
Correct |
75 ms |
125508 KB |
Output is correct |
24 |
Correct |
77 ms |
125544 KB |
Output is correct |
25 |
Correct |
74 ms |
125736 KB |
Output is correct |
26 |
Correct |
81 ms |
125636 KB |
Output is correct |
27 |
Correct |
75 ms |
125708 KB |
Output is correct |
28 |
Correct |
73 ms |
125712 KB |
Output is correct |
29 |
Correct |
76 ms |
125832 KB |
Output is correct |
30 |
Correct |
71 ms |
125672 KB |
Output is correct |
31 |
Correct |
82 ms |
125740 KB |
Output is correct |
32 |
Correct |
75 ms |
125764 KB |
Output is correct |
33 |
Correct |
79 ms |
125508 KB |
Output is correct |
34 |
Correct |
77 ms |
125556 KB |
Output is correct |
35 |
Correct |
82 ms |
125544 KB |
Output is correct |
36 |
Correct |
74 ms |
125740 KB |
Output is correct |
37 |
Correct |
72 ms |
125536 KB |
Output is correct |
38 |
Correct |
69 ms |
125508 KB |
Output is correct |
39 |
Correct |
76 ms |
125668 KB |
Output is correct |
40 |
Correct |
75 ms |
125584 KB |
Output is correct |
41 |
Correct |
74 ms |
125764 KB |
Output is correct |
42 |
Correct |
72 ms |
125764 KB |
Output is correct |
43 |
Correct |
75 ms |
125636 KB |
Output is correct |
44 |
Correct |
72 ms |
125792 KB |
Output is correct |
45 |
Correct |
217 ms |
135852 KB |
Output is correct |
46 |
Correct |
194 ms |
135808 KB |
Output is correct |
47 |
Correct |
175 ms |
135836 KB |
Output is correct |
48 |
Correct |
185 ms |
135832 KB |
Output is correct |
49 |
Correct |
180 ms |
135984 KB |
Output is correct |
50 |
Correct |
157 ms |
132972 KB |
Output is correct |
51 |
Correct |
132 ms |
128356 KB |
Output is correct |
52 |
Correct |
121 ms |
129476 KB |
Output is correct |
53 |
Correct |
169 ms |
137360 KB |
Output is correct |
54 |
Correct |
114 ms |
126288 KB |
Output is correct |
55 |
Correct |
103 ms |
126356 KB |
Output is correct |
56 |
Correct |
102 ms |
126256 KB |
Output is correct |
57 |
Correct |
126 ms |
132624 KB |
Output is correct |
58 |
Correct |
122 ms |
132548 KB |
Output is correct |
59 |
Correct |
169 ms |
134552 KB |
Output is correct |
60 |
Correct |
167 ms |
134980 KB |
Output is correct |
61 |
Correct |
177 ms |
135320 KB |
Output is correct |
62 |
Correct |
121 ms |
128436 KB |
Output is correct |
63 |
Correct |
182 ms |
132008 KB |
Output is correct |
64 |
Correct |
165 ms |
133224 KB |
Output is correct |
65 |
Correct |
104 ms |
126320 KB |
Output is correct |
66 |
Correct |
112 ms |
126464 KB |
Output is correct |
67 |
Correct |
250 ms |
138884 KB |
Output is correct |
68 |
Correct |
205 ms |
138988 KB |
Output is correct |
69 |
Correct |
204 ms |
139172 KB |
Output is correct |
70 |
Correct |
228 ms |
139040 KB |
Output is correct |
71 |
Correct |
171 ms |
137668 KB |
Output is correct |
72 |
Correct |
167 ms |
137708 KB |
Output is correct |
73 |
Correct |
178 ms |
137740 KB |
Output is correct |
74 |
Correct |
172 ms |
137856 KB |
Output is correct |
75 |
Correct |
134 ms |
135660 KB |
Output is correct |
76 |
Correct |
124 ms |
132128 KB |
Output is correct |
77 |
Correct |
129 ms |
132160 KB |
Output is correct |
78 |
Correct |
176 ms |
135860 KB |
Output is correct |
79 |
Correct |
176 ms |
135916 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
74 ms |
125532 KB |
Output is correct |
2 |
Correct |
84 ms |
125508 KB |
Output is correct |
3 |
Correct |
74 ms |
125452 KB |
Output is correct |
4 |
Correct |
74 ms |
125540 KB |
Output is correct |
5 |
Correct |
73 ms |
125460 KB |
Output is correct |
6 |
Correct |
70 ms |
125472 KB |
Output is correct |
7 |
Correct |
71 ms |
125456 KB |
Output is correct |
8 |
Correct |
79 ms |
125492 KB |
Output is correct |
9 |
Correct |
75 ms |
125540 KB |
Output is correct |
10 |
Correct |
72 ms |
125564 KB |
Output is correct |
11 |
Correct |
78 ms |
125468 KB |
Output is correct |
12 |
Correct |
72 ms |
125668 KB |
Output is correct |
13 |
Correct |
74 ms |
125488 KB |
Output is correct |
14 |
Correct |
70 ms |
125508 KB |
Output is correct |
15 |
Correct |
70 ms |
125508 KB |
Output is correct |
16 |
Correct |
81 ms |
125508 KB |
Output is correct |
17 |
Correct |
70 ms |
125452 KB |
Output is correct |
18 |
Correct |
82 ms |
125512 KB |
Output is correct |
19 |
Correct |
72 ms |
125512 KB |
Output is correct |
20 |
Correct |
68 ms |
125508 KB |
Output is correct |
21 |
Correct |
80 ms |
125524 KB |
Output is correct |
22 |
Correct |
83 ms |
125476 KB |
Output is correct |
23 |
Correct |
75 ms |
125508 KB |
Output is correct |
24 |
Correct |
77 ms |
125544 KB |
Output is correct |
25 |
Correct |
74 ms |
125736 KB |
Output is correct |
26 |
Correct |
81 ms |
125636 KB |
Output is correct |
27 |
Correct |
75 ms |
125708 KB |
Output is correct |
28 |
Correct |
73 ms |
125712 KB |
Output is correct |
29 |
Correct |
76 ms |
125832 KB |
Output is correct |
30 |
Correct |
71 ms |
125672 KB |
Output is correct |
31 |
Correct |
82 ms |
125740 KB |
Output is correct |
32 |
Correct |
75 ms |
125764 KB |
Output is correct |
33 |
Correct |
79 ms |
125508 KB |
Output is correct |
34 |
Correct |
77 ms |
125556 KB |
Output is correct |
35 |
Correct |
82 ms |
125544 KB |
Output is correct |
36 |
Correct |
74 ms |
125740 KB |
Output is correct |
37 |
Correct |
72 ms |
125536 KB |
Output is correct |
38 |
Correct |
69 ms |
125508 KB |
Output is correct |
39 |
Correct |
76 ms |
125668 KB |
Output is correct |
40 |
Correct |
75 ms |
125584 KB |
Output is correct |
41 |
Correct |
74 ms |
125764 KB |
Output is correct |
42 |
Correct |
72 ms |
125764 KB |
Output is correct |
43 |
Correct |
75 ms |
125636 KB |
Output is correct |
44 |
Correct |
72 ms |
125792 KB |
Output is correct |
45 |
Correct |
217 ms |
135852 KB |
Output is correct |
46 |
Correct |
194 ms |
135808 KB |
Output is correct |
47 |
Correct |
175 ms |
135836 KB |
Output is correct |
48 |
Correct |
185 ms |
135832 KB |
Output is correct |
49 |
Correct |
180 ms |
135984 KB |
Output is correct |
50 |
Correct |
157 ms |
132972 KB |
Output is correct |
51 |
Correct |
132 ms |
128356 KB |
Output is correct |
52 |
Correct |
121 ms |
129476 KB |
Output is correct |
53 |
Correct |
169 ms |
137360 KB |
Output is correct |
54 |
Correct |
114 ms |
126288 KB |
Output is correct |
55 |
Correct |
103 ms |
126356 KB |
Output is correct |
56 |
Correct |
102 ms |
126256 KB |
Output is correct |
57 |
Correct |
126 ms |
132624 KB |
Output is correct |
58 |
Correct |
122 ms |
132548 KB |
Output is correct |
59 |
Correct |
169 ms |
134552 KB |
Output is correct |
60 |
Correct |
167 ms |
134980 KB |
Output is correct |
61 |
Correct |
177 ms |
135320 KB |
Output is correct |
62 |
Correct |
121 ms |
128436 KB |
Output is correct |
63 |
Correct |
182 ms |
132008 KB |
Output is correct |
64 |
Correct |
165 ms |
133224 KB |
Output is correct |
65 |
Correct |
104 ms |
126320 KB |
Output is correct |
66 |
Correct |
112 ms |
126464 KB |
Output is correct |
67 |
Correct |
250 ms |
138884 KB |
Output is correct |
68 |
Correct |
205 ms |
138988 KB |
Output is correct |
69 |
Correct |
204 ms |
139172 KB |
Output is correct |
70 |
Correct |
228 ms |
139040 KB |
Output is correct |
71 |
Correct |
171 ms |
137668 KB |
Output is correct |
72 |
Correct |
167 ms |
137708 KB |
Output is correct |
73 |
Correct |
178 ms |
137740 KB |
Output is correct |
74 |
Correct |
172 ms |
137856 KB |
Output is correct |
75 |
Correct |
134 ms |
135660 KB |
Output is correct |
76 |
Correct |
124 ms |
132128 KB |
Output is correct |
77 |
Correct |
129 ms |
132160 KB |
Output is correct |
78 |
Correct |
176 ms |
135860 KB |
Output is correct |
79 |
Correct |
176 ms |
135916 KB |
Output is correct |
80 |
Correct |
1251 ms |
234940 KB |
Output is correct |
81 |
Correct |
1313 ms |
234832 KB |
Output is correct |
82 |
Correct |
1301 ms |
235876 KB |
Output is correct |
83 |
Correct |
1357 ms |
234776 KB |
Output is correct |
84 |
Correct |
1302 ms |
234912 KB |
Output is correct |
85 |
Correct |
774 ms |
171512 KB |
Output is correct |
86 |
Correct |
588 ms |
148752 KB |
Output is correct |
87 |
Correct |
590 ms |
164676 KB |
Output is correct |
88 |
Correct |
1138 ms |
256712 KB |
Output is correct |
89 |
Correct |
405 ms |
133316 KB |
Output is correct |
90 |
Correct |
414 ms |
133316 KB |
Output is correct |
91 |
Correct |
418 ms |
133380 KB |
Output is correct |
92 |
Correct |
652 ms |
195976 KB |
Output is correct |
93 |
Correct |
691 ms |
195972 KB |
Output is correct |
94 |
Correct |
1069 ms |
221944 KB |
Output is correct |
95 |
Correct |
1214 ms |
226072 KB |
Output is correct |
96 |
Correct |
1233 ms |
227744 KB |
Output is correct |
97 |
Correct |
545 ms |
157176 KB |
Output is correct |
98 |
Correct |
510 ms |
153412 KB |
Output is correct |
99 |
Correct |
649 ms |
160580 KB |
Output is correct |
100 |
Correct |
397 ms |
133316 KB |
Output is correct |
101 |
Correct |
428 ms |
147960 KB |
Output is correct |
102 |
Correct |
1755 ms |
287868 KB |
Output is correct |
103 |
Correct |
1721 ms |
287932 KB |
Output is correct |
104 |
Correct |
1626 ms |
287976 KB |
Output is correct |
105 |
Correct |
1727 ms |
288008 KB |
Output is correct |
106 |
Correct |
1197 ms |
275024 KB |
Output is correct |
107 |
Correct |
1253 ms |
275116 KB |
Output is correct |
108 |
Correct |
1191 ms |
275236 KB |
Output is correct |
109 |
Correct |
1212 ms |
275200 KB |
Output is correct |
110 |
Correct |
680 ms |
241796 KB |
Output is correct |
111 |
Correct |
675 ms |
206616 KB |
Output is correct |
112 |
Correct |
675 ms |
206640 KB |
Output is correct |
113 |
Correct |
1244 ms |
250204 KB |
Output is correct |
114 |
Correct |
1287 ms |
249184 KB |
Output is correct |