Submission #20611

# Submission time Handle Problem Language Result Execution time Memory
20611 2017-02-12T16:19:35 Z model_code Roller Coaster Railroad (IOI16_railroad) C++11
100 / 100
213 ms 27372 KB
// name = railroad_mp_nlogn.cpp, type = cpp.g++

#include "railroad.h"
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
#define mp make_pair
#define pb push_back
#define fs first
#define sc second
typedef long long int64;
const int INF = (int) 1e9;

int dsu_get(vector<int>& p, int u) {
	return (u == p[u]) ? u : (p[u] = dsu_get(p, p[u]));
}

bool dsu_union(vector<int>& p, int u, int v) {
	u = dsu_get(p, u), v = dsu_get(p, v);
	p[u] = v;
	return (u != v);
}

int64 plan_roller_coaster(vector<int> s, vector<int> t) {
    int n = (int) s.size();
    vector< pair< int, pair< int, int > > > e, edges;
    for (int i = 0; i < n; ++i) {
        e.pb(mp(s[i], mp(1, i)));
        e.pb(mp(t[i], mp(-1, i)));
    }
    e.pb(mp(INF, mp(1, n)));
    e.pb(mp(1, mp(-1, n)));
    n++;
    vector<int> p(n);
    for (int i = 0; i < n; ++i) {
        p[i] = i;
    }
    sort(e.begin(), e.end());
    int64 res = 0;
	for (int i = 0, delta = 0; i + 1 < (int) e.size(); ++i) {
		delta += e[i].sc.fs;
		res += max(0, delta) * (int64) (e[i + 1].fs - e[i].fs);
		edges.pb(mp(e[i + 1].fs - e[i].fs, mp(e[i].sc.sc, e[i + 1].sc.sc)));
		if ((e[i + 1].fs == e[i].fs) || (delta != 0))
			dsu_union(p, e[i].sc.sc, e[i + 1].sc.sc);
	}
	sort(edges.begin(), edges.end());
	for (int i = 0; i < (int) edges.size(); ++i)
		if (dsu_union(p, edges[i].sc.fs, edges[i].sc.sc))
			res += edges[i].fs;
	return res;
}


# Verdict Execution time Memory Grader output
1 Correct 0 ms 1936 KB n = 2
2 Correct 0 ms 1936 KB n = 2
3 Correct 0 ms 1936 KB n = 2
4 Correct 0 ms 1936 KB n = 2
5 Correct 0 ms 1936 KB n = 2
6 Correct 0 ms 1936 KB n = 2
7 Correct 0 ms 1936 KB n = 3
8 Correct 0 ms 1936 KB n = 3
9 Correct 0 ms 1936 KB n = 3
10 Correct 0 ms 1936 KB n = 8
11 Correct 0 ms 1936 KB n = 8
12 Correct 0 ms 1936 KB n = 8
13 Correct 0 ms 1936 KB n = 8
14 Correct 0 ms 1936 KB n = 8
15 Correct 0 ms 1936 KB n = 8
16 Correct 0 ms 1936 KB n = 8
17 Correct 0 ms 1936 KB n = 8
18 Correct 0 ms 1936 KB n = 8
19 Correct 0 ms 1936 KB n = 3
20 Correct 0 ms 1936 KB n = 7
21 Correct 0 ms 1936 KB n = 8
22 Correct 0 ms 1936 KB n = 8
23 Correct 0 ms 1936 KB n = 8
24 Correct 0 ms 1936 KB n = 8
25 Correct 0 ms 1936 KB n = 8
# Verdict Execution time Memory Grader output
1 Correct 0 ms 1936 KB n = 2
2 Correct 0 ms 1936 KB n = 2
3 Correct 0 ms 1936 KB n = 2
4 Correct 0 ms 1936 KB n = 2
5 Correct 0 ms 1936 KB n = 2
6 Correct 0 ms 1936 KB n = 2
7 Correct 0 ms 1936 KB n = 3
8 Correct 0 ms 1936 KB n = 3
9 Correct 0 ms 1936 KB n = 3
10 Correct 0 ms 1936 KB n = 8
11 Correct 0 ms 1936 KB n = 8
12 Correct 0 ms 1936 KB n = 8
13 Correct 0 ms 1936 KB n = 8
14 Correct 0 ms 1936 KB n = 8
15 Correct 0 ms 1936 KB n = 8
16 Correct 0 ms 1936 KB n = 8
17 Correct 0 ms 1936 KB n = 8
18 Correct 0 ms 1936 KB n = 8
19 Correct 0 ms 1936 KB n = 3
20 Correct 0 ms 1936 KB n = 7
21 Correct 0 ms 1936 KB n = 8
22 Correct 0 ms 1936 KB n = 8
23 Correct 0 ms 1936 KB n = 8
24 Correct 0 ms 1936 KB n = 8
25 Correct 0 ms 1936 KB n = 8
26 Correct 0 ms 1936 KB n = 8
27 Correct 0 ms 1936 KB n = 8
28 Correct 0 ms 1936 KB n = 8
29 Correct 0 ms 1936 KB n = 16
30 Correct 0 ms 1936 KB n = 16
31 Correct 0 ms 1936 KB n = 16
32 Correct 0 ms 1936 KB n = 16
33 Correct 0 ms 1936 KB n = 16
34 Correct 0 ms 1936 KB n = 16
35 Correct 0 ms 1936 KB n = 16
36 Correct 0 ms 1936 KB n = 15
37 Correct 0 ms 1936 KB n = 8
38 Correct 0 ms 1936 KB n = 16
39 Correct 0 ms 1936 KB n = 16
40 Correct 0 ms 1936 KB n = 9
41 Correct 0 ms 1936 KB n = 16
42 Correct 0 ms 1936 KB n = 16
43 Correct 0 ms 1936 KB n = 16
44 Correct 0 ms 1936 KB n = 9
45 Correct 0 ms 1936 KB n = 15
46 Correct 0 ms 1936 KB n = 16
47 Correct 0 ms 1936 KB n = 16
48 Correct 0 ms 1936 KB n = 16
# Verdict Execution time Memory Grader output
1 Correct 209 ms 24368 KB n = 199999
2 Correct 213 ms 24368 KB n = 199991
3 Correct 203 ms 24368 KB n = 199993
4 Correct 143 ms 23432 KB n = 152076
5 Correct 79 ms 13072 KB n = 93249
6 Correct 169 ms 24368 KB n = 199910
7 Correct 173 ms 24368 KB n = 199999
8 Correct 183 ms 24368 KB n = 199997
9 Correct 169 ms 23808 KB n = 171294
10 Correct 143 ms 23212 KB n = 140872
11 Correct 173 ms 24368 KB n = 199886
12 Correct 186 ms 24368 KB n = 199996
13 Correct 179 ms 24368 KB n = 200000
14 Correct 186 ms 24368 KB n = 199998
15 Correct 186 ms 24368 KB n = 200000
16 Correct 196 ms 24368 KB n = 199998
17 Correct 189 ms 27372 KB n = 200000
18 Correct 179 ms 24272 KB n = 190000
19 Correct 173 ms 26588 KB n = 177777
20 Correct 93 ms 13196 KB n = 100000
21 Correct 193 ms 24368 KB n = 200000
22 Correct 189 ms 24368 KB n = 200000
23 Correct 183 ms 24368 KB n = 200000
# Verdict Execution time Memory Grader output
1 Correct 0 ms 1936 KB n = 2
2 Correct 0 ms 1936 KB n = 2
3 Correct 0 ms 1936 KB n = 2
4 Correct 0 ms 1936 KB n = 2
5 Correct 0 ms 1936 KB n = 2
6 Correct 0 ms 1936 KB n = 2
7 Correct 0 ms 1936 KB n = 3
8 Correct 0 ms 1936 KB n = 3
9 Correct 0 ms 1936 KB n = 3
10 Correct 0 ms 1936 KB n = 8
11 Correct 0 ms 1936 KB n = 8
12 Correct 0 ms 1936 KB n = 8
13 Correct 0 ms 1936 KB n = 8
14 Correct 0 ms 1936 KB n = 8
15 Correct 0 ms 1936 KB n = 8
16 Correct 0 ms 1936 KB n = 8
17 Correct 0 ms 1936 KB n = 8
18 Correct 0 ms 1936 KB n = 8
19 Correct 0 ms 1936 KB n = 3
20 Correct 0 ms 1936 KB n = 7
21 Correct 0 ms 1936 KB n = 8
22 Correct 0 ms 1936 KB n = 8
23 Correct 0 ms 1936 KB n = 8
24 Correct 0 ms 1936 KB n = 8
25 Correct 0 ms 1936 KB n = 8
26 Correct 0 ms 1936 KB n = 8
27 Correct 0 ms 1936 KB n = 8
28 Correct 0 ms 1936 KB n = 8
29 Correct 0 ms 1936 KB n = 16
30 Correct 0 ms 1936 KB n = 16
31 Correct 0 ms 1936 KB n = 16
32 Correct 0 ms 1936 KB n = 16
33 Correct 0 ms 1936 KB n = 16
34 Correct 0 ms 1936 KB n = 16
35 Correct 0 ms 1936 KB n = 16
36 Correct 0 ms 1936 KB n = 15
37 Correct 0 ms 1936 KB n = 8
38 Correct 0 ms 1936 KB n = 16
39 Correct 0 ms 1936 KB n = 16
40 Correct 0 ms 1936 KB n = 9
41 Correct 0 ms 1936 KB n = 16
42 Correct 0 ms 1936 KB n = 16
43 Correct 0 ms 1936 KB n = 16
44 Correct 0 ms 1936 KB n = 9
45 Correct 0 ms 1936 KB n = 15
46 Correct 0 ms 1936 KB n = 16
47 Correct 0 ms 1936 KB n = 16
48 Correct 0 ms 1936 KB n = 16
49 Correct 209 ms 24368 KB n = 199999
50 Correct 213 ms 24368 KB n = 199991
51 Correct 203 ms 24368 KB n = 199993
52 Correct 143 ms 23432 KB n = 152076
53 Correct 79 ms 13072 KB n = 93249
54 Correct 169 ms 24368 KB n = 199910
55 Correct 173 ms 24368 KB n = 199999
56 Correct 183 ms 24368 KB n = 199997
57 Correct 169 ms 23808 KB n = 171294
58 Correct 143 ms 23212 KB n = 140872
59 Correct 173 ms 24368 KB n = 199886
60 Correct 186 ms 24368 KB n = 199996
61 Correct 179 ms 24368 KB n = 200000
62 Correct 186 ms 24368 KB n = 199998
63 Correct 186 ms 24368 KB n = 200000
64 Correct 196 ms 24368 KB n = 199998
65 Correct 189 ms 27372 KB n = 200000
66 Correct 179 ms 24272 KB n = 190000
67 Correct 173 ms 26588 KB n = 177777
68 Correct 93 ms 13196 KB n = 100000
69 Correct 193 ms 24368 KB n = 200000
70 Correct 189 ms 24368 KB n = 200000
71 Correct 183 ms 24368 KB n = 200000
72 Correct 213 ms 24368 KB n = 200000
73 Correct 206 ms 24368 KB n = 200000
74 Correct 199 ms 24368 KB n = 200000
75 Correct 176 ms 24368 KB n = 200000
76 Correct 176 ms 24368 KB n = 200000
77 Correct 166 ms 24368 KB n = 200000
78 Correct 173 ms 24368 KB n = 200000
79 Correct 186 ms 24052 KB n = 184307
80 Correct 73 ms 12732 KB n = 76040
81 Correct 169 ms 24368 KB n = 199981
82 Correct 169 ms 24368 KB n = 199994
83 Correct 173 ms 24368 KB n = 199996
84 Correct 189 ms 24368 KB n = 199998
85 Correct 183 ms 24368 KB n = 200000
86 Correct 189 ms 24368 KB n = 199998
87 Correct 193 ms 27372 KB n = 200000
88 Correct 196 ms 24912 KB n = 200000
89 Correct 179 ms 27372 KB n = 200000
90 Correct 196 ms 24368 KB n = 200000
91 Correct 203 ms 24368 KB n = 200000
92 Correct 176 ms 24368 KB n = 200000