#include<bits/stdc++.h>
using namespace std;
const int NMAX = 1000009;
int N, M, a[NMAX], b[NMAX], p[2 * NMAX], pos[2 * NMAX], ap[NMAX];
const int mod = 1e9 + 7;
int ansMi, ansMa, hansMi, hansMa, mi[5 * NMAX], ma[5 * NMAX], hmi[5 * NMAX], hma[5 * NMAX];
void refresh (int nod, int f1, int f2)
{
mi[nod] = min (mi[f1], mi[f2]);
ma[nod] = max (ma[f1], ma[f2]);
hmi[nod] = (mi[nod] == mi[f1] ? hmi[f1] : hmi[f2]);
hma[nod] = (ma[nod] == ma[f1] ? hma[f1] : hma[f2]);
}
void build (int nod, int st, int dr)
{
if (st == dr)
{
if (p[st] == 0) mi[nod] = 4 * N, ma[nod] = 0;
else mi[nod] = ma[nod] = p[st];
hmi[nod] = hma[nod] = st;
return ;
}
int mij = (st + dr) >> 1, f1 = nod << 1, f2 = f1 | 1;
build (f1, st, mij);
build (f2, mij + 1, dr);
refresh (nod, f1, f2);
}
void query (int nod, int st, int dr, int x, int y)
{
if (x > y) return ;
if (x <= st && dr <= y)
{
if (mi[nod] < ansMi)
ansMi = mi[nod], hansMi = hmi[nod];
if (ma[nod] > ansMa)
ansMa = ma[nod], hansMa = hma[nod];
return ;
}
int mij = (st + dr) >> 1, f1 = nod << 1, f2 = f1 | 1;
if (x <= mij) query (f1, st, mij, x, y);
if (mij < y) query (f2, mij + 1, dr, x, y);
}
void delPos (int nod, int st, int dr, int pos)
{
if (st == dr)
{
mi[nod] = 4 * N, ma[nod] = 0;
return ;
}
int mij = (st + dr) >> 1, f1 = nod << 1, f2 = f1 | 1;
if (pos <= mij) delPos (f1, st, mij, pos);
else delPos (f2, mij + 1, dr, pos);
refresh (nod, f1, f2);
}
void delVal (int x)
{
delPos (1, 1, 2 * N, a[x]);
delPos (1, 1, 2 * N, b[x]);
}
void dfs (int nod, int c)
{
if (ap[nod] != 0 && ap[nod] != c)
{
printf ("0\n");
exit (0);
}
if (ap[nod] != 0) return ;
ap[nod] = c, delVal (nod);
while (1)
{
ansMi = 4 * N, ansMa = 0, query (1, 1, 2 * N, a[nod] + 1, b[nod] - 1);
if (ansMi > a[nod] && ansMa < b[nod]) break;
int toDel = 0;
if (ansMi <= a[nod]) toDel = pos[hansMi];
else toDel = pos[hansMa];
dfs (toDel, 3 - c);
}
}
void check (vector < int > &ids)
{
for (int i=1; i<=2 * N; i++)
p[i] = 0;
for (auto it : ids)
p[a[it]] = b[it], p[b[it]] = a[it];
build (1, 1, 2 * N);
for (auto i : ids)
{
ansMi = 4 * N, ansMa = 0, query (1, 1, 2 * N, a[i] + 1, b[i] - 1);
if (ansMi < a[i] || ansMa > b[i])
{
printf ("0\n");
exit (0);
}
}
}
int main ()
{
//freopen ("input", "r", stdin);
//freopen ("output", "w", stdout);
scanf ("%d", &N);
for (int i=1; i<=N; i++)
{
scanf ("%d %d", &a[i], &b[i]);
p[a[i]] = b[i], p[b[i]] = a[i];
pos[a[i]] = pos[b[i]] = i;
}
build (1, 1, 2 * N);
int ans = 1;
for (int i=1; i<=N; i++)
if (ap[i] == 0)
dfs (i, +1), ans = (ans + ans) % mod;
vector < int > v[2];
for (int i=1; i<=N; i++)
v[ap[i] - 1].push_back (i);
check (v[0]), check (v[1]);
printf ("%d\n", ans);
return 0;
}
Compilation message
port_facility.cpp: In function 'int main()':
port_facility.cpp:112:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
scanf ("%d", &N);
~~~~~~^~~~~~~~~~
port_facility.cpp:115:11: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
scanf ("%d %d", &a[i], &b[i]);
~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
376 KB |
Output is correct |
2 |
Correct |
2 ms |
484 KB |
Output is correct |
3 |
Correct |
2 ms |
484 KB |
Output is correct |
4 |
Correct |
2 ms |
508 KB |
Output is correct |
5 |
Correct |
2 ms |
528 KB |
Output is correct |
6 |
Correct |
2 ms |
532 KB |
Output is correct |
7 |
Correct |
2 ms |
536 KB |
Output is correct |
8 |
Correct |
2 ms |
592 KB |
Output is correct |
9 |
Correct |
2 ms |
660 KB |
Output is correct |
10 |
Correct |
2 ms |
852 KB |
Output is correct |
11 |
Correct |
2 ms |
852 KB |
Output is correct |
12 |
Correct |
2 ms |
852 KB |
Output is correct |
13 |
Correct |
2 ms |
852 KB |
Output is correct |
14 |
Correct |
2 ms |
852 KB |
Output is correct |
15 |
Correct |
2 ms |
852 KB |
Output is correct |
16 |
Correct |
2 ms |
852 KB |
Output is correct |
17 |
Correct |
2 ms |
852 KB |
Output is correct |
18 |
Correct |
2 ms |
852 KB |
Output is correct |
19 |
Correct |
2 ms |
852 KB |
Output is correct |
20 |
Correct |
2 ms |
852 KB |
Output is correct |
21 |
Correct |
2 ms |
852 KB |
Output is correct |
22 |
Correct |
2 ms |
852 KB |
Output is correct |
23 |
Correct |
2 ms |
852 KB |
Output is correct |
24 |
Correct |
2 ms |
884 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
376 KB |
Output is correct |
2 |
Correct |
2 ms |
484 KB |
Output is correct |
3 |
Correct |
2 ms |
484 KB |
Output is correct |
4 |
Correct |
2 ms |
508 KB |
Output is correct |
5 |
Correct |
2 ms |
528 KB |
Output is correct |
6 |
Correct |
2 ms |
532 KB |
Output is correct |
7 |
Correct |
2 ms |
536 KB |
Output is correct |
8 |
Correct |
2 ms |
592 KB |
Output is correct |
9 |
Correct |
2 ms |
660 KB |
Output is correct |
10 |
Correct |
2 ms |
852 KB |
Output is correct |
11 |
Correct |
2 ms |
852 KB |
Output is correct |
12 |
Correct |
2 ms |
852 KB |
Output is correct |
13 |
Correct |
2 ms |
852 KB |
Output is correct |
14 |
Correct |
2 ms |
852 KB |
Output is correct |
15 |
Correct |
2 ms |
852 KB |
Output is correct |
16 |
Correct |
2 ms |
852 KB |
Output is correct |
17 |
Correct |
2 ms |
852 KB |
Output is correct |
18 |
Correct |
2 ms |
852 KB |
Output is correct |
19 |
Correct |
2 ms |
852 KB |
Output is correct |
20 |
Correct |
2 ms |
852 KB |
Output is correct |
21 |
Correct |
2 ms |
852 KB |
Output is correct |
22 |
Correct |
2 ms |
852 KB |
Output is correct |
23 |
Correct |
2 ms |
852 KB |
Output is correct |
24 |
Correct |
2 ms |
884 KB |
Output is correct |
25 |
Correct |
4 ms |
1084 KB |
Output is correct |
26 |
Correct |
4 ms |
1104 KB |
Output is correct |
27 |
Correct |
4 ms |
1140 KB |
Output is correct |
28 |
Correct |
4 ms |
1140 KB |
Output is correct |
29 |
Correct |
4 ms |
1196 KB |
Output is correct |
30 |
Correct |
4 ms |
1216 KB |
Output is correct |
31 |
Correct |
5 ms |
1252 KB |
Output is correct |
32 |
Correct |
4 ms |
1252 KB |
Output is correct |
33 |
Correct |
4 ms |
1296 KB |
Output is correct |
34 |
Correct |
4 ms |
1328 KB |
Output is correct |
35 |
Correct |
3 ms |
1352 KB |
Output is correct |
36 |
Correct |
4 ms |
1352 KB |
Output is correct |
37 |
Correct |
5 ms |
1392 KB |
Output is correct |
38 |
Correct |
4 ms |
1412 KB |
Output is correct |
39 |
Correct |
4 ms |
1432 KB |
Output is correct |
40 |
Correct |
5 ms |
1452 KB |
Output is correct |
41 |
Correct |
4 ms |
1472 KB |
Output is correct |
42 |
Correct |
5 ms |
1492 KB |
Output is correct |
43 |
Correct |
3 ms |
1512 KB |
Output is correct |
44 |
Correct |
4 ms |
1660 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
376 KB |
Output is correct |
2 |
Correct |
2 ms |
484 KB |
Output is correct |
3 |
Correct |
2 ms |
484 KB |
Output is correct |
4 |
Correct |
2 ms |
508 KB |
Output is correct |
5 |
Correct |
2 ms |
528 KB |
Output is correct |
6 |
Correct |
2 ms |
532 KB |
Output is correct |
7 |
Correct |
2 ms |
536 KB |
Output is correct |
8 |
Correct |
2 ms |
592 KB |
Output is correct |
9 |
Correct |
2 ms |
660 KB |
Output is correct |
10 |
Correct |
2 ms |
852 KB |
Output is correct |
11 |
Correct |
2 ms |
852 KB |
Output is correct |
12 |
Correct |
2 ms |
852 KB |
Output is correct |
13 |
Correct |
2 ms |
852 KB |
Output is correct |
14 |
Correct |
2 ms |
852 KB |
Output is correct |
15 |
Correct |
2 ms |
852 KB |
Output is correct |
16 |
Correct |
2 ms |
852 KB |
Output is correct |
17 |
Correct |
2 ms |
852 KB |
Output is correct |
18 |
Correct |
2 ms |
852 KB |
Output is correct |
19 |
Correct |
2 ms |
852 KB |
Output is correct |
20 |
Correct |
2 ms |
852 KB |
Output is correct |
21 |
Correct |
2 ms |
852 KB |
Output is correct |
22 |
Correct |
2 ms |
852 KB |
Output is correct |
23 |
Correct |
2 ms |
852 KB |
Output is correct |
24 |
Correct |
2 ms |
884 KB |
Output is correct |
25 |
Correct |
4 ms |
1084 KB |
Output is correct |
26 |
Correct |
4 ms |
1104 KB |
Output is correct |
27 |
Correct |
4 ms |
1140 KB |
Output is correct |
28 |
Correct |
4 ms |
1140 KB |
Output is correct |
29 |
Correct |
4 ms |
1196 KB |
Output is correct |
30 |
Correct |
4 ms |
1216 KB |
Output is correct |
31 |
Correct |
5 ms |
1252 KB |
Output is correct |
32 |
Correct |
4 ms |
1252 KB |
Output is correct |
33 |
Correct |
4 ms |
1296 KB |
Output is correct |
34 |
Correct |
4 ms |
1328 KB |
Output is correct |
35 |
Correct |
3 ms |
1352 KB |
Output is correct |
36 |
Correct |
4 ms |
1352 KB |
Output is correct |
37 |
Correct |
5 ms |
1392 KB |
Output is correct |
38 |
Correct |
4 ms |
1412 KB |
Output is correct |
39 |
Correct |
4 ms |
1432 KB |
Output is correct |
40 |
Correct |
5 ms |
1452 KB |
Output is correct |
41 |
Correct |
4 ms |
1472 KB |
Output is correct |
42 |
Correct |
5 ms |
1492 KB |
Output is correct |
43 |
Correct |
3 ms |
1512 KB |
Output is correct |
44 |
Correct |
4 ms |
1660 KB |
Output is correct |
45 |
Correct |
206 ms |
14544 KB |
Output is correct |
46 |
Correct |
203 ms |
16280 KB |
Output is correct |
47 |
Correct |
200 ms |
16776 KB |
Output is correct |
48 |
Correct |
225 ms |
18800 KB |
Output is correct |
49 |
Correct |
206 ms |
19360 KB |
Output is correct |
50 |
Correct |
209 ms |
21196 KB |
Output is correct |
51 |
Correct |
176 ms |
22452 KB |
Output is correct |
52 |
Correct |
132 ms |
23032 KB |
Output is correct |
53 |
Correct |
274 ms |
24332 KB |
Output is correct |
54 |
Correct |
152 ms |
28476 KB |
Output is correct |
55 |
Correct |
148 ms |
28476 KB |
Output is correct |
56 |
Correct |
165 ms |
29544 KB |
Output is correct |
57 |
Correct |
183 ms |
29544 KB |
Output is correct |
58 |
Correct |
158 ms |
30632 KB |
Output is correct |
59 |
Correct |
193 ms |
31820 KB |
Output is correct |
60 |
Correct |
194 ms |
33152 KB |
Output is correct |
61 |
Correct |
202 ms |
34300 KB |
Output is correct |
62 |
Correct |
140 ms |
35832 KB |
Output is correct |
63 |
Correct |
159 ms |
37108 KB |
Output is correct |
64 |
Correct |
174 ms |
38112 KB |
Output is correct |
65 |
Correct |
239 ms |
42596 KB |
Output is correct |
66 |
Correct |
245 ms |
43680 KB |
Output is correct |
67 |
Correct |
217 ms |
43680 KB |
Output is correct |
68 |
Correct |
230 ms |
44732 KB |
Output is correct |
69 |
Correct |
223 ms |
46124 KB |
Output is correct |
70 |
Correct |
233 ms |
47332 KB |
Output is correct |
71 |
Correct |
205 ms |
50068 KB |
Output is correct |
72 |
Correct |
219 ms |
51376 KB |
Output is correct |
73 |
Correct |
201 ms |
51744 KB |
Output is correct |
74 |
Correct |
203 ms |
52920 KB |
Output is correct |
75 |
Correct |
154 ms |
53832 KB |
Output is correct |
76 |
Correct |
173 ms |
56484 KB |
Output is correct |
77 |
Correct |
121 ms |
57584 KB |
Output is correct |
78 |
Correct |
203 ms |
57584 KB |
Output is correct |
79 |
Correct |
206 ms |
57584 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
376 KB |
Output is correct |
2 |
Correct |
2 ms |
484 KB |
Output is correct |
3 |
Correct |
2 ms |
484 KB |
Output is correct |
4 |
Correct |
2 ms |
508 KB |
Output is correct |
5 |
Correct |
2 ms |
528 KB |
Output is correct |
6 |
Correct |
2 ms |
532 KB |
Output is correct |
7 |
Correct |
2 ms |
536 KB |
Output is correct |
8 |
Correct |
2 ms |
592 KB |
Output is correct |
9 |
Correct |
2 ms |
660 KB |
Output is correct |
10 |
Correct |
2 ms |
852 KB |
Output is correct |
11 |
Correct |
2 ms |
852 KB |
Output is correct |
12 |
Correct |
2 ms |
852 KB |
Output is correct |
13 |
Correct |
2 ms |
852 KB |
Output is correct |
14 |
Correct |
2 ms |
852 KB |
Output is correct |
15 |
Correct |
2 ms |
852 KB |
Output is correct |
16 |
Correct |
2 ms |
852 KB |
Output is correct |
17 |
Correct |
2 ms |
852 KB |
Output is correct |
18 |
Correct |
2 ms |
852 KB |
Output is correct |
19 |
Correct |
2 ms |
852 KB |
Output is correct |
20 |
Correct |
2 ms |
852 KB |
Output is correct |
21 |
Correct |
2 ms |
852 KB |
Output is correct |
22 |
Correct |
2 ms |
852 KB |
Output is correct |
23 |
Correct |
2 ms |
852 KB |
Output is correct |
24 |
Correct |
2 ms |
884 KB |
Output is correct |
25 |
Correct |
4 ms |
1084 KB |
Output is correct |
26 |
Correct |
4 ms |
1104 KB |
Output is correct |
27 |
Correct |
4 ms |
1140 KB |
Output is correct |
28 |
Correct |
4 ms |
1140 KB |
Output is correct |
29 |
Correct |
4 ms |
1196 KB |
Output is correct |
30 |
Correct |
4 ms |
1216 KB |
Output is correct |
31 |
Correct |
5 ms |
1252 KB |
Output is correct |
32 |
Correct |
4 ms |
1252 KB |
Output is correct |
33 |
Correct |
4 ms |
1296 KB |
Output is correct |
34 |
Correct |
4 ms |
1328 KB |
Output is correct |
35 |
Correct |
3 ms |
1352 KB |
Output is correct |
36 |
Correct |
4 ms |
1352 KB |
Output is correct |
37 |
Correct |
5 ms |
1392 KB |
Output is correct |
38 |
Correct |
4 ms |
1412 KB |
Output is correct |
39 |
Correct |
4 ms |
1432 KB |
Output is correct |
40 |
Correct |
5 ms |
1452 KB |
Output is correct |
41 |
Correct |
4 ms |
1472 KB |
Output is correct |
42 |
Correct |
5 ms |
1492 KB |
Output is correct |
43 |
Correct |
3 ms |
1512 KB |
Output is correct |
44 |
Correct |
4 ms |
1660 KB |
Output is correct |
45 |
Correct |
206 ms |
14544 KB |
Output is correct |
46 |
Correct |
203 ms |
16280 KB |
Output is correct |
47 |
Correct |
200 ms |
16776 KB |
Output is correct |
48 |
Correct |
225 ms |
18800 KB |
Output is correct |
49 |
Correct |
206 ms |
19360 KB |
Output is correct |
50 |
Correct |
209 ms |
21196 KB |
Output is correct |
51 |
Correct |
176 ms |
22452 KB |
Output is correct |
52 |
Correct |
132 ms |
23032 KB |
Output is correct |
53 |
Correct |
274 ms |
24332 KB |
Output is correct |
54 |
Correct |
152 ms |
28476 KB |
Output is correct |
55 |
Correct |
148 ms |
28476 KB |
Output is correct |
56 |
Correct |
165 ms |
29544 KB |
Output is correct |
57 |
Correct |
183 ms |
29544 KB |
Output is correct |
58 |
Correct |
158 ms |
30632 KB |
Output is correct |
59 |
Correct |
193 ms |
31820 KB |
Output is correct |
60 |
Correct |
194 ms |
33152 KB |
Output is correct |
61 |
Correct |
202 ms |
34300 KB |
Output is correct |
62 |
Correct |
140 ms |
35832 KB |
Output is correct |
63 |
Correct |
159 ms |
37108 KB |
Output is correct |
64 |
Correct |
174 ms |
38112 KB |
Output is correct |
65 |
Correct |
239 ms |
42596 KB |
Output is correct |
66 |
Correct |
245 ms |
43680 KB |
Output is correct |
67 |
Correct |
217 ms |
43680 KB |
Output is correct |
68 |
Correct |
230 ms |
44732 KB |
Output is correct |
69 |
Correct |
223 ms |
46124 KB |
Output is correct |
70 |
Correct |
233 ms |
47332 KB |
Output is correct |
71 |
Correct |
205 ms |
50068 KB |
Output is correct |
72 |
Correct |
219 ms |
51376 KB |
Output is correct |
73 |
Correct |
201 ms |
51744 KB |
Output is correct |
74 |
Correct |
203 ms |
52920 KB |
Output is correct |
75 |
Correct |
154 ms |
53832 KB |
Output is correct |
76 |
Correct |
173 ms |
56484 KB |
Output is correct |
77 |
Correct |
121 ms |
57584 KB |
Output is correct |
78 |
Correct |
203 ms |
57584 KB |
Output is correct |
79 |
Correct |
206 ms |
57584 KB |
Output is correct |
80 |
Correct |
2903 ms |
160852 KB |
Output is correct |
81 |
Correct |
2843 ms |
175004 KB |
Output is correct |
82 |
Correct |
2897 ms |
188420 KB |
Output is correct |
83 |
Correct |
2916 ms |
204328 KB |
Output is correct |
84 |
Correct |
2931 ms |
219108 KB |
Output is correct |
85 |
Correct |
2167 ms |
232284 KB |
Output is correct |
86 |
Correct |
2656 ms |
248216 KB |
Output is correct |
87 |
Correct |
1948 ms |
259720 KB |
Output is correct |
88 |
Correct |
3896 ms |
274236 KB |
Output is correct |
89 |
Correct |
2134 ms |
319836 KB |
Output is correct |
90 |
Correct |
2144 ms |
319836 KB |
Output is correct |
91 |
Correct |
2028 ms |
333308 KB |
Output is correct |
92 |
Correct |
2400 ms |
333308 KB |
Output is correct |
93 |
Correct |
2213 ms |
347084 KB |
Output is correct |
94 |
Correct |
2903 ms |
362400 KB |
Output is correct |
95 |
Correct |
2778 ms |
377244 KB |
Output is correct |
96 |
Correct |
2755 ms |
392012 KB |
Output is correct |
97 |
Correct |
2122 ms |
406168 KB |
Output is correct |
98 |
Correct |
2049 ms |
421136 KB |
Output is correct |
99 |
Correct |
2322 ms |
435676 KB |
Output is correct |
100 |
Correct |
3537 ms |
480356 KB |
Output is correct |
101 |
Correct |
3601 ms |
494736 KB |
Output is correct |
102 |
Correct |
3013 ms |
494736 KB |
Output is correct |
103 |
Correct |
2945 ms |
508272 KB |
Output is correct |
104 |
Correct |
2968 ms |
522352 KB |
Output is correct |
105 |
Correct |
3004 ms |
537600 KB |
Output is correct |
106 |
Correct |
3126 ms |
567680 KB |
Output is correct |
107 |
Correct |
3224 ms |
582268 KB |
Output is correct |
108 |
Correct |
2812 ms |
587812 KB |
Output is correct |
109 |
Correct |
2916 ms |
602124 KB |
Output is correct |
110 |
Correct |
2161 ms |
625332 KB |
Output is correct |
111 |
Correct |
2066 ms |
640472 KB |
Output is correct |
112 |
Correct |
1682 ms |
655200 KB |
Output is correct |
113 |
Correct |
2859 ms |
655200 KB |
Output is correct |
114 |
Correct |
2819 ms |
656108 KB |
Output is correct |