#include "parks.h"
#include<bits/stdc++.h>
using ll = int;
using namespace std;
#define pll pair <ll,ll>
#define fi first
#define se second
#define MP make_pair
#define sz(a) (ll((a).size()))
#define MASK(i) (1LL<<(i))
#define BIT(mask,i) (((mask) >> (i))&1)
struct point{
ll x,y,id;
point(ll x1 = 0,ll y1 = 0,ll id1 = 0):x(x1),y(y1),id(id1){}
bool operator < (const point &p)const {
return MP(x,y) < MP(p.x,p.y);
}
};
int construct_roads(std::vector<int> x, std::vector<int> y) {
ll n = sz(x);
vector <pll> all[7];
vector <point> a(n);
for (ll i = 0;i < n;i ++){
a[i] = {x[i],y[i],i};
}
sort(a.begin(),a.end());
for (ll i = 0;i < n;i ++){
if (all[a[i].x].empty() || all[a[i].x].back().se + 2 != a[i].y)all[a[i].x].push_back(MP(a[i].y,a[i].y));
else{
all[a[i].x].back().se+=2;
}
}
vector <int> U, V, A, B;
auto add = [&](pll u,pll v, ll x,ll y){
// cout<<u.fi<<' '<<u.se<<' '<<v.fi<<' '<<v.se<<endl;
U.push_back((*lower_bound(a.begin(),a.end(),point(u.fi,u.se,0))).id);
V.push_back((*lower_bound(a.begin(),a.end(),point(v.fi,v.se,0))).id);
A.push_back(x);
B.push_back(y);
};
for (auto x:all[2]){
for (ll i = x.fi + 2;i <= x.se;i += 2){
add(MP(2,i-2),MP(2,i),1,i-1);
}
}
for (auto x:all[4]){
static ll ptr2 = 0;
static ll ptr6 = 0;
vector <ll> sus2,sus6;
while (ptr2 < sz(all[2]) && all[2][ptr2].se < x.fi)ptr2++;
while (ptr2 < sz(all[2]) && all[2][ptr2].fi <= x.se){
// cout<<all[2][ptr2].fi<<' '<<all[2][ptr2].se<<endl;
pll tmp = all[2][ptr2];
if (tmp.fi <= x.fi && x.fi <= tmp.se){
add(MP(4,x.fi),MP(2,x.fi),3,x.fi-1);
}
else if (tmp.fi <= x.se && x.se <= tmp.se){
add(MP(4,x.se),MP(2,x.se),3,x.se+1);
}
else{
sus2.push_back(tmp.fi);
}
ptr2++;
}
while (ptr6 < sz(all[6]) && all[6][ptr6].se < x.fi)ptr6++;
while (ptr6 < sz(all[6]) && all[6][ptr6].fi <= x.se){
pll tmp = all[6][ptr6];
if (tmp.fi <= x.fi && x.fi <= tmp.se){
add(MP(4,x.fi),MP(6,x.fi),5,x.fi-1);
}
else if (tmp.fi <= x.se && x.se <= tmp.se){
add(MP(4,x.se),MP(6,x.se),5,x.se+1);
}
else{
sus6.push_back(tmp.fi);
}
ptr6++;
}
ptr2=0,ptr6=0;
for (ll j = x.fi + 2;j <= x.se;j += 2){
while(ptr2 < sz(sus2) && sus2[ptr2]<j)ptr2++;
while(ptr6 < sz(sus6) && sus6[ptr6]<j)ptr6++;
bool do2,do6;
do2 = (ptr2 < sz(sus2) && sus2[ptr2]==j);
do6 = (ptr6 < sz(sus6) && sus6[ptr6]==j);
if (do2 && do6){
add(MP(4,j),MP(2,j),3,j-1);
add(MP(4,j),MP(6,j),5,j+1);
add(MP(4,j),MP(4,j-2),5,j-1);
add(MP(4,j),MP(4,j+2),3,j+1);
j+=2;
}
else if (do2){
add(MP(4,j),MP(2,j),3,j-1);
add(MP(4,j),MP(4,j-2),5,j-1);
}
else if (do6){
add(MP(4,j),MP(6,j),5,j-1);
add(MP(4,j),MP(4,j-2),3,j-1);
}
else add(MP(4,j),MP(4,j-2),3,j-1);
}
}
for (auto x:all[6]){
for (ll i = x.fi + 2;i <= x.se;i += 2){
add(MP(6,i-2),MP(6,i),7,i-1);
}
}
{
vector <vector <ll > > g(n);
for (ll i = 0;i < sz(U);i ++){
g[U[i]].push_back(V[i]);
g[V[i]].push_back(U[i]);
}
vector <bool> in(n);
queue <ll> q;
q.push(0);
in[0] = 1;
while (!q.empty()){
ll u = q.front();
q.pop();
for (auto v:g[u]){
if (!in[v]){
in[v] = 1;
q.push(v);
}
}
}
for (ll i = 0;i < n;i ++)if (!in[i])return 0;
build(U, V, A, B);
return 1;
}
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
348 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Correct |
0 ms |
348 KB |
Output is correct |
4 |
Correct |
0 ms |
348 KB |
Output is correct |
5 |
Correct |
0 ms |
348 KB |
Output is correct |
6 |
Correct |
0 ms |
348 KB |
Output is correct |
7 |
Correct |
1 ms |
432 KB |
Output is correct |
8 |
Correct |
0 ms |
348 KB |
Output is correct |
9 |
Correct |
77 ms |
14164 KB |
Output is correct |
10 |
Correct |
5 ms |
1648 KB |
Output is correct |
11 |
Correct |
26 ms |
7636 KB |
Output is correct |
12 |
Correct |
7 ms |
2396 KB |
Output is correct |
13 |
Correct |
14 ms |
5020 KB |
Output is correct |
14 |
Correct |
1 ms |
348 KB |
Output is correct |
15 |
Correct |
1 ms |
600 KB |
Output is correct |
16 |
Correct |
58 ms |
14008 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
348 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Correct |
0 ms |
348 KB |
Output is correct |
4 |
Correct |
0 ms |
348 KB |
Output is correct |
5 |
Correct |
0 ms |
348 KB |
Output is correct |
6 |
Correct |
0 ms |
348 KB |
Output is correct |
7 |
Correct |
1 ms |
432 KB |
Output is correct |
8 |
Correct |
0 ms |
348 KB |
Output is correct |
9 |
Correct |
77 ms |
14164 KB |
Output is correct |
10 |
Correct |
5 ms |
1648 KB |
Output is correct |
11 |
Correct |
26 ms |
7636 KB |
Output is correct |
12 |
Correct |
7 ms |
2396 KB |
Output is correct |
13 |
Correct |
14 ms |
5020 KB |
Output is correct |
14 |
Correct |
1 ms |
348 KB |
Output is correct |
15 |
Correct |
1 ms |
600 KB |
Output is correct |
16 |
Correct |
58 ms |
14008 KB |
Output is correct |
17 |
Correct |
0 ms |
348 KB |
Output is correct |
18 |
Correct |
0 ms |
348 KB |
Output is correct |
19 |
Correct |
0 ms |
348 KB |
Output is correct |
20 |
Correct |
0 ms |
348 KB |
Output is correct |
21 |
Correct |
0 ms |
348 KB |
Output is correct |
22 |
Correct |
0 ms |
348 KB |
Output is correct |
23 |
Correct |
130 ms |
27884 KB |
Output is correct |
24 |
Correct |
0 ms |
348 KB |
Output is correct |
25 |
Correct |
1 ms |
604 KB |
Output is correct |
26 |
Correct |
1 ms |
600 KB |
Output is correct |
27 |
Correct |
2 ms |
860 KB |
Output is correct |
28 |
Correct |
48 ms |
11260 KB |
Output is correct |
29 |
Correct |
73 ms |
16836 KB |
Output is correct |
30 |
Correct |
103 ms |
22360 KB |
Output is correct |
31 |
Correct |
153 ms |
27876 KB |
Output is correct |
32 |
Correct |
0 ms |
348 KB |
Output is correct |
33 |
Correct |
0 ms |
348 KB |
Output is correct |
34 |
Correct |
0 ms |
348 KB |
Output is correct |
35 |
Correct |
0 ms |
348 KB |
Output is correct |
36 |
Correct |
0 ms |
432 KB |
Output is correct |
37 |
Correct |
0 ms |
348 KB |
Output is correct |
38 |
Correct |
0 ms |
348 KB |
Output is correct |
39 |
Correct |
0 ms |
348 KB |
Output is correct |
40 |
Correct |
0 ms |
348 KB |
Output is correct |
41 |
Correct |
0 ms |
344 KB |
Output is correct |
42 |
Correct |
0 ms |
348 KB |
Output is correct |
43 |
Correct |
1 ms |
604 KB |
Output is correct |
44 |
Correct |
1 ms |
604 KB |
Output is correct |
45 |
Correct |
139 ms |
14236 KB |
Output is correct |
46 |
Correct |
264 ms |
20600 KB |
Output is correct |
47 |
Correct |
228 ms |
20536 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
348 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Correct |
0 ms |
348 KB |
Output is correct |
4 |
Correct |
0 ms |
348 KB |
Output is correct |
5 |
Correct |
0 ms |
348 KB |
Output is correct |
6 |
Correct |
0 ms |
348 KB |
Output is correct |
7 |
Correct |
1 ms |
432 KB |
Output is correct |
8 |
Correct |
0 ms |
348 KB |
Output is correct |
9 |
Correct |
77 ms |
14164 KB |
Output is correct |
10 |
Correct |
5 ms |
1648 KB |
Output is correct |
11 |
Correct |
26 ms |
7636 KB |
Output is correct |
12 |
Correct |
7 ms |
2396 KB |
Output is correct |
13 |
Correct |
14 ms |
5020 KB |
Output is correct |
14 |
Correct |
1 ms |
348 KB |
Output is correct |
15 |
Correct |
1 ms |
600 KB |
Output is correct |
16 |
Correct |
58 ms |
14008 KB |
Output is correct |
17 |
Correct |
0 ms |
348 KB |
Output is correct |
18 |
Correct |
0 ms |
348 KB |
Output is correct |
19 |
Correct |
0 ms |
348 KB |
Output is correct |
20 |
Correct |
0 ms |
348 KB |
Output is correct |
21 |
Correct |
0 ms |
348 KB |
Output is correct |
22 |
Correct |
0 ms |
348 KB |
Output is correct |
23 |
Correct |
130 ms |
27884 KB |
Output is correct |
24 |
Correct |
0 ms |
348 KB |
Output is correct |
25 |
Correct |
1 ms |
604 KB |
Output is correct |
26 |
Correct |
1 ms |
600 KB |
Output is correct |
27 |
Correct |
2 ms |
860 KB |
Output is correct |
28 |
Correct |
48 ms |
11260 KB |
Output is correct |
29 |
Correct |
73 ms |
16836 KB |
Output is correct |
30 |
Correct |
103 ms |
22360 KB |
Output is correct |
31 |
Correct |
153 ms |
27876 KB |
Output is correct |
32 |
Correct |
0 ms |
348 KB |
Output is correct |
33 |
Correct |
0 ms |
348 KB |
Output is correct |
34 |
Correct |
0 ms |
348 KB |
Output is correct |
35 |
Correct |
0 ms |
348 KB |
Output is correct |
36 |
Correct |
0 ms |
432 KB |
Output is correct |
37 |
Correct |
0 ms |
348 KB |
Output is correct |
38 |
Correct |
0 ms |
348 KB |
Output is correct |
39 |
Correct |
0 ms |
348 KB |
Output is correct |
40 |
Correct |
0 ms |
348 KB |
Output is correct |
41 |
Correct |
0 ms |
344 KB |
Output is correct |
42 |
Correct |
0 ms |
348 KB |
Output is correct |
43 |
Correct |
1 ms |
604 KB |
Output is correct |
44 |
Correct |
1 ms |
604 KB |
Output is correct |
45 |
Correct |
139 ms |
14236 KB |
Output is correct |
46 |
Correct |
264 ms |
20600 KB |
Output is correct |
47 |
Correct |
228 ms |
20536 KB |
Output is correct |
48 |
Correct |
0 ms |
348 KB |
Output is correct |
49 |
Correct |
0 ms |
348 KB |
Output is correct |
50 |
Correct |
0 ms |
348 KB |
Output is correct |
51 |
Correct |
1 ms |
348 KB |
Output is correct |
52 |
Correct |
0 ms |
348 KB |
Output is correct |
53 |
Correct |
0 ms |
348 KB |
Output is correct |
54 |
Correct |
0 ms |
344 KB |
Output is correct |
55 |
Correct |
123 ms |
27808 KB |
Output is correct |
56 |
Correct |
0 ms |
604 KB |
Output is correct |
57 |
Correct |
1 ms |
604 KB |
Output is correct |
58 |
Correct |
3 ms |
1260 KB |
Output is correct |
59 |
Correct |
4 ms |
1372 KB |
Output is correct |
60 |
Correct |
58 ms |
14012 KB |
Output is correct |
61 |
Correct |
75 ms |
18860 KB |
Output is correct |
62 |
Correct |
119 ms |
23140 KB |
Output is correct |
63 |
Correct |
122 ms |
27936 KB |
Output is correct |
64 |
Correct |
0 ms |
348 KB |
Output is correct |
65 |
Correct |
0 ms |
348 KB |
Output is correct |
66 |
Correct |
0 ms |
348 KB |
Output is correct |
67 |
Correct |
125 ms |
27924 KB |
Output is correct |
68 |
Correct |
123 ms |
27820 KB |
Output is correct |
69 |
Correct |
136 ms |
27816 KB |
Output is correct |
70 |
Correct |
2 ms |
856 KB |
Output is correct |
71 |
Correct |
4 ms |
1228 KB |
Output is correct |
72 |
Correct |
198 ms |
14396 KB |
Output is correct |
73 |
Correct |
299 ms |
21524 KB |
Output is correct |
74 |
Correct |
502 ms |
28360 KB |
Output is correct |
75 |
Correct |
129 ms |
30044 KB |
Output is correct |
76 |
Correct |
123 ms |
28096 KB |
Output is correct |
77 |
Correct |
2 ms |
860 KB |
Output is correct |
78 |
Correct |
4 ms |
1368 KB |
Output is correct |
79 |
Correct |
123 ms |
14684 KB |
Output is correct |
80 |
Correct |
227 ms |
22220 KB |
Output is correct |
81 |
Correct |
352 ms |
29396 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
348 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Correct |
0 ms |
348 KB |
Output is correct |
4 |
Correct |
0 ms |
348 KB |
Output is correct |
5 |
Correct |
0 ms |
348 KB |
Output is correct |
6 |
Correct |
0 ms |
348 KB |
Output is correct |
7 |
Correct |
1 ms |
432 KB |
Output is correct |
8 |
Correct |
0 ms |
348 KB |
Output is correct |
9 |
Correct |
77 ms |
14164 KB |
Output is correct |
10 |
Correct |
5 ms |
1648 KB |
Output is correct |
11 |
Correct |
26 ms |
7636 KB |
Output is correct |
12 |
Correct |
7 ms |
2396 KB |
Output is correct |
13 |
Correct |
14 ms |
5020 KB |
Output is correct |
14 |
Correct |
1 ms |
348 KB |
Output is correct |
15 |
Correct |
1 ms |
600 KB |
Output is correct |
16 |
Correct |
58 ms |
14008 KB |
Output is correct |
17 |
Runtime error |
1 ms |
348 KB |
Execution killed with signal 11 |
18 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
348 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Correct |
0 ms |
348 KB |
Output is correct |
4 |
Correct |
0 ms |
348 KB |
Output is correct |
5 |
Correct |
0 ms |
348 KB |
Output is correct |
6 |
Correct |
0 ms |
348 KB |
Output is correct |
7 |
Correct |
1 ms |
432 KB |
Output is correct |
8 |
Correct |
0 ms |
348 KB |
Output is correct |
9 |
Correct |
77 ms |
14164 KB |
Output is correct |
10 |
Correct |
5 ms |
1648 KB |
Output is correct |
11 |
Correct |
26 ms |
7636 KB |
Output is correct |
12 |
Correct |
7 ms |
2396 KB |
Output is correct |
13 |
Correct |
14 ms |
5020 KB |
Output is correct |
14 |
Correct |
1 ms |
348 KB |
Output is correct |
15 |
Correct |
1 ms |
600 KB |
Output is correct |
16 |
Correct |
58 ms |
14008 KB |
Output is correct |
17 |
Runtime error |
46 ms |
13632 KB |
Execution killed with signal 11 |
18 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
348 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Correct |
0 ms |
348 KB |
Output is correct |
4 |
Correct |
0 ms |
348 KB |
Output is correct |
5 |
Correct |
0 ms |
348 KB |
Output is correct |
6 |
Correct |
0 ms |
348 KB |
Output is correct |
7 |
Correct |
1 ms |
432 KB |
Output is correct |
8 |
Correct |
0 ms |
348 KB |
Output is correct |
9 |
Correct |
77 ms |
14164 KB |
Output is correct |
10 |
Correct |
5 ms |
1648 KB |
Output is correct |
11 |
Correct |
26 ms |
7636 KB |
Output is correct |
12 |
Correct |
7 ms |
2396 KB |
Output is correct |
13 |
Correct |
14 ms |
5020 KB |
Output is correct |
14 |
Correct |
1 ms |
348 KB |
Output is correct |
15 |
Correct |
1 ms |
600 KB |
Output is correct |
16 |
Correct |
58 ms |
14008 KB |
Output is correct |
17 |
Correct |
0 ms |
348 KB |
Output is correct |
18 |
Correct |
0 ms |
348 KB |
Output is correct |
19 |
Correct |
0 ms |
348 KB |
Output is correct |
20 |
Correct |
0 ms |
348 KB |
Output is correct |
21 |
Correct |
0 ms |
348 KB |
Output is correct |
22 |
Correct |
0 ms |
348 KB |
Output is correct |
23 |
Correct |
130 ms |
27884 KB |
Output is correct |
24 |
Correct |
0 ms |
348 KB |
Output is correct |
25 |
Correct |
1 ms |
604 KB |
Output is correct |
26 |
Correct |
1 ms |
600 KB |
Output is correct |
27 |
Correct |
2 ms |
860 KB |
Output is correct |
28 |
Correct |
48 ms |
11260 KB |
Output is correct |
29 |
Correct |
73 ms |
16836 KB |
Output is correct |
30 |
Correct |
103 ms |
22360 KB |
Output is correct |
31 |
Correct |
153 ms |
27876 KB |
Output is correct |
32 |
Correct |
0 ms |
348 KB |
Output is correct |
33 |
Correct |
0 ms |
348 KB |
Output is correct |
34 |
Correct |
0 ms |
348 KB |
Output is correct |
35 |
Correct |
0 ms |
348 KB |
Output is correct |
36 |
Correct |
0 ms |
432 KB |
Output is correct |
37 |
Correct |
0 ms |
348 KB |
Output is correct |
38 |
Correct |
0 ms |
348 KB |
Output is correct |
39 |
Correct |
0 ms |
348 KB |
Output is correct |
40 |
Correct |
0 ms |
348 KB |
Output is correct |
41 |
Correct |
0 ms |
344 KB |
Output is correct |
42 |
Correct |
0 ms |
348 KB |
Output is correct |
43 |
Correct |
1 ms |
604 KB |
Output is correct |
44 |
Correct |
1 ms |
604 KB |
Output is correct |
45 |
Correct |
139 ms |
14236 KB |
Output is correct |
46 |
Correct |
264 ms |
20600 KB |
Output is correct |
47 |
Correct |
228 ms |
20536 KB |
Output is correct |
48 |
Correct |
0 ms |
348 KB |
Output is correct |
49 |
Correct |
0 ms |
348 KB |
Output is correct |
50 |
Correct |
0 ms |
348 KB |
Output is correct |
51 |
Correct |
1 ms |
348 KB |
Output is correct |
52 |
Correct |
0 ms |
348 KB |
Output is correct |
53 |
Correct |
0 ms |
348 KB |
Output is correct |
54 |
Correct |
0 ms |
344 KB |
Output is correct |
55 |
Correct |
123 ms |
27808 KB |
Output is correct |
56 |
Correct |
0 ms |
604 KB |
Output is correct |
57 |
Correct |
1 ms |
604 KB |
Output is correct |
58 |
Correct |
3 ms |
1260 KB |
Output is correct |
59 |
Correct |
4 ms |
1372 KB |
Output is correct |
60 |
Correct |
58 ms |
14012 KB |
Output is correct |
61 |
Correct |
75 ms |
18860 KB |
Output is correct |
62 |
Correct |
119 ms |
23140 KB |
Output is correct |
63 |
Correct |
122 ms |
27936 KB |
Output is correct |
64 |
Correct |
0 ms |
348 KB |
Output is correct |
65 |
Correct |
0 ms |
348 KB |
Output is correct |
66 |
Correct |
0 ms |
348 KB |
Output is correct |
67 |
Correct |
125 ms |
27924 KB |
Output is correct |
68 |
Correct |
123 ms |
27820 KB |
Output is correct |
69 |
Correct |
136 ms |
27816 KB |
Output is correct |
70 |
Correct |
2 ms |
856 KB |
Output is correct |
71 |
Correct |
4 ms |
1228 KB |
Output is correct |
72 |
Correct |
198 ms |
14396 KB |
Output is correct |
73 |
Correct |
299 ms |
21524 KB |
Output is correct |
74 |
Correct |
502 ms |
28360 KB |
Output is correct |
75 |
Correct |
129 ms |
30044 KB |
Output is correct |
76 |
Correct |
123 ms |
28096 KB |
Output is correct |
77 |
Correct |
2 ms |
860 KB |
Output is correct |
78 |
Correct |
4 ms |
1368 KB |
Output is correct |
79 |
Correct |
123 ms |
14684 KB |
Output is correct |
80 |
Correct |
227 ms |
22220 KB |
Output is correct |
81 |
Correct |
352 ms |
29396 KB |
Output is correct |
82 |
Runtime error |
1 ms |
348 KB |
Execution killed with signal 11 |
83 |
Halted |
0 ms |
0 KB |
- |