#include "railroad.h"
#include <bits/stdc++.h>
#pragma GCC optimize ("O3")
#pragma GCC target ("sse4")
using namespace std;
#define X first
#define Y second
#define pb push_back
typedef pair<int, int> ii;
typedef long long ll;
int n;
const int maxN = 4e5+5;
int sw[maxN];
vector<int> adj[maxN];
int s[maxN], t[maxN];
struct dsu
{
int par[maxN];
int cc;
dsu(int n = 0)
{
for(int i = 0; i< n; i++) par[i] = i;
cc = n;
}
int findset(int x)
{
if(x == par[x]) return x;
return par[x] = findset(par[x]);
}
void unionset(int x, int y)
{
int a = findset(x), b = findset(y);
if(a == b) return;
cc--;
par[a] = b;
}
};
dsu foo;
ll plan_roller_coaster(vector<int> S, vector<int> T)
{
n = S.size();
for(int i = 0; i< n; i++)
{
s[i] = S[i];
t[i] = T[i];
}
vector<int> all;
for(int i = 0; i< n; i++)
{
all.pb(s[i]); all.pb(t[i]);
}
all.pb(1); all.pb(1e9);
sort(all.begin(), all.end());
all.resize(unique(all.begin(), all.end())-all.begin());
foo = dsu( (int) all.size());
sw[0]++;
sw[all.size()-1]--;
adj[all.size()-1].pb(0);
foo.unionset(all.size()-1, 0);
for(int i = 0; i< n; i++)
{
int ss = lower_bound(all.begin(), all.end(), s[i])-all.begin();
int tt = lower_bound(all.begin(), all.end(), t[i])-all.begin();
sw[ss]--;
sw[tt]++;
adj[ss].pb(tt);
foo.unionset(ss, tt);
}
int run = 0;
ll base = 0;
for(int i = 0; i+1< (int) all.size(); i++)
{
run += sw[i];
if(run> 0)
{
adj[i].pb(i+1);
foo.unionset(i, i+1);
}
if(run< 0)
{
adj[i+1].pb(i);
base += 1LL*-run*(all[i+1]-all[i]);
foo.unionset(i+1, i);
}
}
vector< ii > edges;
for(int i = 0; i+1< (int) all.size(); i++)
{
edges.pb({all[i+1]-all[i], i});
}
sort(edges.begin(), edges.end());
for(ii kk : edges)
{
int w = kk.X, u = kk.Y;
int x = foo.findset(u), y = foo.findset(u+1);
if(x == y) continue;
foo.unionset(x, y);
base += w;
if(foo.cc == 1) break;
}
return base;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
12 ms |
11264 KB |
n = 2 |
2 |
Correct |
13 ms |
11264 KB |
n = 2 |
3 |
Correct |
12 ms |
11264 KB |
n = 2 |
4 |
Correct |
12 ms |
11392 KB |
n = 2 |
5 |
Correct |
11 ms |
11264 KB |
n = 2 |
6 |
Correct |
11 ms |
11392 KB |
n = 2 |
7 |
Correct |
11 ms |
11264 KB |
n = 3 |
8 |
Correct |
14 ms |
11264 KB |
n = 3 |
9 |
Correct |
12 ms |
11236 KB |
n = 3 |
10 |
Correct |
12 ms |
11264 KB |
n = 8 |
11 |
Correct |
12 ms |
11264 KB |
n = 8 |
12 |
Correct |
12 ms |
11264 KB |
n = 8 |
13 |
Correct |
12 ms |
11264 KB |
n = 8 |
14 |
Correct |
14 ms |
11392 KB |
n = 8 |
15 |
Correct |
12 ms |
11264 KB |
n = 8 |
16 |
Correct |
12 ms |
11392 KB |
n = 8 |
17 |
Correct |
12 ms |
11264 KB |
n = 8 |
18 |
Correct |
12 ms |
11264 KB |
n = 8 |
19 |
Correct |
12 ms |
11392 KB |
n = 3 |
20 |
Correct |
13 ms |
11288 KB |
n = 7 |
21 |
Correct |
13 ms |
11264 KB |
n = 8 |
22 |
Correct |
11 ms |
11264 KB |
n = 8 |
23 |
Correct |
12 ms |
11264 KB |
n = 8 |
24 |
Correct |
12 ms |
11264 KB |
n = 8 |
25 |
Correct |
14 ms |
11264 KB |
n = 8 |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
12 ms |
11264 KB |
n = 2 |
2 |
Correct |
13 ms |
11264 KB |
n = 2 |
3 |
Correct |
12 ms |
11264 KB |
n = 2 |
4 |
Correct |
12 ms |
11392 KB |
n = 2 |
5 |
Correct |
11 ms |
11264 KB |
n = 2 |
6 |
Correct |
11 ms |
11392 KB |
n = 2 |
7 |
Correct |
11 ms |
11264 KB |
n = 3 |
8 |
Correct |
14 ms |
11264 KB |
n = 3 |
9 |
Correct |
12 ms |
11236 KB |
n = 3 |
10 |
Correct |
12 ms |
11264 KB |
n = 8 |
11 |
Correct |
12 ms |
11264 KB |
n = 8 |
12 |
Correct |
12 ms |
11264 KB |
n = 8 |
13 |
Correct |
12 ms |
11264 KB |
n = 8 |
14 |
Correct |
14 ms |
11392 KB |
n = 8 |
15 |
Correct |
12 ms |
11264 KB |
n = 8 |
16 |
Correct |
12 ms |
11392 KB |
n = 8 |
17 |
Correct |
12 ms |
11264 KB |
n = 8 |
18 |
Correct |
12 ms |
11264 KB |
n = 8 |
19 |
Correct |
12 ms |
11392 KB |
n = 3 |
20 |
Correct |
13 ms |
11288 KB |
n = 7 |
21 |
Correct |
13 ms |
11264 KB |
n = 8 |
22 |
Correct |
11 ms |
11264 KB |
n = 8 |
23 |
Correct |
12 ms |
11264 KB |
n = 8 |
24 |
Correct |
12 ms |
11264 KB |
n = 8 |
25 |
Correct |
14 ms |
11264 KB |
n = 8 |
26 |
Correct |
12 ms |
11264 KB |
n = 8 |
27 |
Correct |
12 ms |
11264 KB |
n = 8 |
28 |
Correct |
12 ms |
11264 KB |
n = 8 |
29 |
Correct |
11 ms |
11264 KB |
n = 16 |
30 |
Correct |
12 ms |
11392 KB |
n = 16 |
31 |
Correct |
11 ms |
11264 KB |
n = 16 |
32 |
Correct |
14 ms |
11392 KB |
n = 16 |
33 |
Correct |
12 ms |
11264 KB |
n = 16 |
34 |
Correct |
12 ms |
11264 KB |
n = 16 |
35 |
Correct |
12 ms |
11264 KB |
n = 16 |
36 |
Correct |
11 ms |
11264 KB |
n = 15 |
37 |
Correct |
11 ms |
11264 KB |
n = 8 |
38 |
Correct |
11 ms |
11264 KB |
n = 16 |
39 |
Correct |
12 ms |
11392 KB |
n = 16 |
40 |
Correct |
11 ms |
11392 KB |
n = 9 |
41 |
Correct |
12 ms |
11264 KB |
n = 16 |
42 |
Correct |
14 ms |
11264 KB |
n = 16 |
43 |
Correct |
12 ms |
11392 KB |
n = 16 |
44 |
Correct |
12 ms |
11264 KB |
n = 9 |
45 |
Correct |
12 ms |
11392 KB |
n = 15 |
46 |
Correct |
13 ms |
11264 KB |
n = 16 |
47 |
Correct |
12 ms |
11264 KB |
n = 16 |
48 |
Correct |
12 ms |
11392 KB |
n = 16 |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
393 ms |
37504 KB |
n = 199999 |
2 |
Correct |
460 ms |
37608 KB |
n = 199991 |
3 |
Correct |
354 ms |
37488 KB |
n = 199993 |
4 |
Correct |
266 ms |
32360 KB |
n = 152076 |
5 |
Correct |
165 ms |
23916 KB |
n = 93249 |
6 |
Correct |
331 ms |
34796 KB |
n = 199910 |
7 |
Correct |
335 ms |
37736 KB |
n = 199999 |
8 |
Correct |
304 ms |
35332 KB |
n = 199997 |
9 |
Correct |
304 ms |
34384 KB |
n = 171294 |
10 |
Correct |
251 ms |
31080 KB |
n = 140872 |
11 |
Correct |
333 ms |
34984 KB |
n = 199886 |
12 |
Correct |
335 ms |
37968 KB |
n = 199996 |
13 |
Correct |
310 ms |
36044 KB |
n = 200000 |
14 |
Correct |
324 ms |
39404 KB |
n = 199998 |
15 |
Correct |
301 ms |
38472 KB |
n = 200000 |
16 |
Correct |
322 ms |
38852 KB |
n = 199998 |
17 |
Correct |
318 ms |
37608 KB |
n = 200000 |
18 |
Correct |
338 ms |
36748 KB |
n = 190000 |
19 |
Correct |
288 ms |
37916 KB |
n = 177777 |
20 |
Correct |
167 ms |
24604 KB |
n = 100000 |
21 |
Correct |
369 ms |
37572 KB |
n = 200000 |
22 |
Correct |
323 ms |
37492 KB |
n = 200000 |
23 |
Correct |
340 ms |
37544 KB |
n = 200000 |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
12 ms |
11264 KB |
n = 2 |
2 |
Correct |
13 ms |
11264 KB |
n = 2 |
3 |
Correct |
12 ms |
11264 KB |
n = 2 |
4 |
Correct |
12 ms |
11392 KB |
n = 2 |
5 |
Correct |
11 ms |
11264 KB |
n = 2 |
6 |
Correct |
11 ms |
11392 KB |
n = 2 |
7 |
Correct |
11 ms |
11264 KB |
n = 3 |
8 |
Correct |
14 ms |
11264 KB |
n = 3 |
9 |
Correct |
12 ms |
11236 KB |
n = 3 |
10 |
Correct |
12 ms |
11264 KB |
n = 8 |
11 |
Correct |
12 ms |
11264 KB |
n = 8 |
12 |
Correct |
12 ms |
11264 KB |
n = 8 |
13 |
Correct |
12 ms |
11264 KB |
n = 8 |
14 |
Correct |
14 ms |
11392 KB |
n = 8 |
15 |
Correct |
12 ms |
11264 KB |
n = 8 |
16 |
Correct |
12 ms |
11392 KB |
n = 8 |
17 |
Correct |
12 ms |
11264 KB |
n = 8 |
18 |
Correct |
12 ms |
11264 KB |
n = 8 |
19 |
Correct |
12 ms |
11392 KB |
n = 3 |
20 |
Correct |
13 ms |
11288 KB |
n = 7 |
21 |
Correct |
13 ms |
11264 KB |
n = 8 |
22 |
Correct |
11 ms |
11264 KB |
n = 8 |
23 |
Correct |
12 ms |
11264 KB |
n = 8 |
24 |
Correct |
12 ms |
11264 KB |
n = 8 |
25 |
Correct |
14 ms |
11264 KB |
n = 8 |
26 |
Correct |
12 ms |
11264 KB |
n = 8 |
27 |
Correct |
12 ms |
11264 KB |
n = 8 |
28 |
Correct |
12 ms |
11264 KB |
n = 8 |
29 |
Correct |
11 ms |
11264 KB |
n = 16 |
30 |
Correct |
12 ms |
11392 KB |
n = 16 |
31 |
Correct |
11 ms |
11264 KB |
n = 16 |
32 |
Correct |
14 ms |
11392 KB |
n = 16 |
33 |
Correct |
12 ms |
11264 KB |
n = 16 |
34 |
Correct |
12 ms |
11264 KB |
n = 16 |
35 |
Correct |
12 ms |
11264 KB |
n = 16 |
36 |
Correct |
11 ms |
11264 KB |
n = 15 |
37 |
Correct |
11 ms |
11264 KB |
n = 8 |
38 |
Correct |
11 ms |
11264 KB |
n = 16 |
39 |
Correct |
12 ms |
11392 KB |
n = 16 |
40 |
Correct |
11 ms |
11392 KB |
n = 9 |
41 |
Correct |
12 ms |
11264 KB |
n = 16 |
42 |
Correct |
14 ms |
11264 KB |
n = 16 |
43 |
Correct |
12 ms |
11392 KB |
n = 16 |
44 |
Correct |
12 ms |
11264 KB |
n = 9 |
45 |
Correct |
12 ms |
11392 KB |
n = 15 |
46 |
Correct |
13 ms |
11264 KB |
n = 16 |
47 |
Correct |
12 ms |
11264 KB |
n = 16 |
48 |
Correct |
12 ms |
11392 KB |
n = 16 |
49 |
Correct |
393 ms |
37504 KB |
n = 199999 |
50 |
Correct |
460 ms |
37608 KB |
n = 199991 |
51 |
Correct |
354 ms |
37488 KB |
n = 199993 |
52 |
Correct |
266 ms |
32360 KB |
n = 152076 |
53 |
Correct |
165 ms |
23916 KB |
n = 93249 |
54 |
Correct |
331 ms |
34796 KB |
n = 199910 |
55 |
Correct |
335 ms |
37736 KB |
n = 199999 |
56 |
Correct |
304 ms |
35332 KB |
n = 199997 |
57 |
Correct |
304 ms |
34384 KB |
n = 171294 |
58 |
Correct |
251 ms |
31080 KB |
n = 140872 |
59 |
Correct |
333 ms |
34984 KB |
n = 199886 |
60 |
Correct |
335 ms |
37968 KB |
n = 199996 |
61 |
Correct |
310 ms |
36044 KB |
n = 200000 |
62 |
Correct |
324 ms |
39404 KB |
n = 199998 |
63 |
Correct |
301 ms |
38472 KB |
n = 200000 |
64 |
Correct |
322 ms |
38852 KB |
n = 199998 |
65 |
Correct |
318 ms |
37608 KB |
n = 200000 |
66 |
Correct |
338 ms |
36748 KB |
n = 190000 |
67 |
Correct |
288 ms |
37916 KB |
n = 177777 |
68 |
Correct |
167 ms |
24604 KB |
n = 100000 |
69 |
Correct |
369 ms |
37572 KB |
n = 200000 |
70 |
Correct |
323 ms |
37492 KB |
n = 200000 |
71 |
Correct |
340 ms |
37544 KB |
n = 200000 |
72 |
Correct |
376 ms |
37652 KB |
n = 200000 |
73 |
Correct |
379 ms |
37564 KB |
n = 200000 |
74 |
Correct |
369 ms |
37604 KB |
n = 200000 |
75 |
Correct |
324 ms |
41360 KB |
n = 200000 |
76 |
Correct |
332 ms |
41308 KB |
n = 200000 |
77 |
Correct |
295 ms |
35432 KB |
n = 200000 |
78 |
Correct |
238 ms |
32336 KB |
n = 200000 |
79 |
Correct |
350 ms |
39072 KB |
n = 184307 |
80 |
Correct |
128 ms |
23312 KB |
n = 76040 |
81 |
Correct |
301 ms |
37740 KB |
n = 199981 |
82 |
Correct |
356 ms |
41156 KB |
n = 199994 |
83 |
Correct |
321 ms |
38732 KB |
n = 199996 |
84 |
Correct |
311 ms |
42320 KB |
n = 199998 |
85 |
Correct |
326 ms |
41420 KB |
n = 200000 |
86 |
Correct |
364 ms |
42136 KB |
n = 199998 |
87 |
Correct |
333 ms |
41344 KB |
n = 200000 |
88 |
Correct |
367 ms |
41592 KB |
n = 200000 |
89 |
Correct |
338 ms |
44480 KB |
n = 200000 |
90 |
Correct |
370 ms |
41392 KB |
n = 200000 |
91 |
Correct |
317 ms |
41288 KB |
n = 200000 |
92 |
Correct |
334 ms |
41332 KB |
n = 200000 |