답안 #669261

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
669261 2022-12-06T05:39:19 Z flappybird Roller Coaster Railroad (IOI16_railroad) C++17
100 / 100
230 ms 18756 KB
#include "railroad.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;

#define MAX 404040
#define INF 1000000001

vector<int> all;
int deg[MAX];

int N;

int p[MAX];
int find(int x) {
	if (p[x] == x) return x;
	return p[x] = find(p[x]);
}

void uni(int x, int y) {
	x = find(x);
	y = find(y);
	p[x] = y;
}

long long plan_roller_coaster(std::vector<int> s, std::vector<int> t) {
	N = s.size();
	for (auto v : s) all.push_back(v);
	for (auto v : t) all.push_back(v);
	all.push_back(INF);
	all.push_back(0);
	sort(all.begin(), all.end());
	all.erase(unique(all.begin(), all.end()), all.end());
	int X = all.size();
	int i;
	for (i = 0; i < X; i++) p[i] = i;
	for (auto& v : s) v = lower_bound(all.begin(), all.end(), v) - all.begin();
	for (auto& v : t) v = lower_bound(all.begin(), all.end(), v) - all.begin();
	for (i = 0; i < N; i++) {
		deg[s[i]]--;
		deg[t[i]]++;
		uni(s[i], t[i]);
	}
	deg[0]++;
	deg[X - 1]--;
	ll ans = 0;
	for (i = 1; i < X; i++) {
		if (deg[i - 1]) {
			uni(i - 1, i);
			if (deg[i - 1] < 0) ans += 1ll * -(ll)deg[i - 1] * ((ll)all[i] - all[i - 1]);
			deg[i] += deg[i - 1];
		}
	}
	vector<pii> vpi;
	for (i = 1; i < X; i++) vpi.emplace_back(all[i] - all[i - 1], i);
	sort(vpi.begin(), vpi.end());
	for (auto& [c, v] : vpi) {
		if (find(v - 1) != find(v)) {
			uni(v - 1, v);
			ans += c;
		}
	}
	return ans;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 212 KB n = 2
2 Correct 0 ms 212 KB n = 2
3 Correct 0 ms 212 KB n = 2
4 Correct 1 ms 212 KB n = 2
5 Correct 0 ms 212 KB n = 2
6 Correct 0 ms 212 KB n = 2
7 Correct 1 ms 212 KB n = 3
8 Correct 1 ms 212 KB n = 3
9 Correct 1 ms 212 KB n = 3
10 Correct 0 ms 212 KB n = 8
11 Correct 0 ms 212 KB n = 8
12 Correct 1 ms 308 KB n = 8
13 Correct 1 ms 212 KB n = 8
14 Correct 1 ms 212 KB n = 8
15 Correct 1 ms 212 KB n = 8
16 Correct 1 ms 308 KB n = 8
17 Correct 1 ms 212 KB n = 8
18 Correct 1 ms 304 KB n = 8
19 Correct 1 ms 212 KB n = 3
20 Correct 1 ms 212 KB n = 7
21 Correct 1 ms 212 KB n = 8
22 Correct 1 ms 212 KB n = 8
23 Correct 1 ms 308 KB n = 8
24 Correct 0 ms 212 KB n = 8
25 Correct 1 ms 212 KB n = 8
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 212 KB n = 2
2 Correct 0 ms 212 KB n = 2
3 Correct 0 ms 212 KB n = 2
4 Correct 1 ms 212 KB n = 2
5 Correct 0 ms 212 KB n = 2
6 Correct 0 ms 212 KB n = 2
7 Correct 1 ms 212 KB n = 3
8 Correct 1 ms 212 KB n = 3
9 Correct 1 ms 212 KB n = 3
10 Correct 0 ms 212 KB n = 8
11 Correct 0 ms 212 KB n = 8
12 Correct 1 ms 308 KB n = 8
13 Correct 1 ms 212 KB n = 8
14 Correct 1 ms 212 KB n = 8
15 Correct 1 ms 212 KB n = 8
16 Correct 1 ms 308 KB n = 8
17 Correct 1 ms 212 KB n = 8
18 Correct 1 ms 304 KB n = 8
19 Correct 1 ms 212 KB n = 3
20 Correct 1 ms 212 KB n = 7
21 Correct 1 ms 212 KB n = 8
22 Correct 1 ms 212 KB n = 8
23 Correct 1 ms 308 KB n = 8
24 Correct 0 ms 212 KB n = 8
25 Correct 1 ms 212 KB n = 8
26 Correct 1 ms 212 KB n = 8
27 Correct 1 ms 212 KB n = 8
28 Correct 1 ms 312 KB n = 8
29 Correct 1 ms 212 KB n = 16
30 Correct 1 ms 308 KB n = 16
31 Correct 1 ms 212 KB n = 16
32 Correct 1 ms 304 KB n = 16
33 Correct 1 ms 312 KB n = 16
34 Correct 1 ms 212 KB n = 16
35 Correct 1 ms 212 KB n = 16
36 Correct 1 ms 212 KB n = 15
37 Correct 1 ms 212 KB n = 8
38 Correct 1 ms 312 KB n = 16
39 Correct 1 ms 308 KB n = 16
40 Correct 1 ms 256 KB n = 9
41 Correct 1 ms 212 KB n = 16
42 Correct 1 ms 308 KB n = 16
43 Correct 1 ms 212 KB n = 16
44 Correct 1 ms 212 KB n = 9
45 Correct 1 ms 212 KB n = 15
46 Correct 1 ms 212 KB n = 16
47 Correct 1 ms 212 KB n = 16
48 Correct 1 ms 308 KB n = 16
# 결과 실행 시간 메모리 Grader output
1 Correct 207 ms 12324 KB n = 199999
2 Correct 214 ms 12340 KB n = 199991
3 Correct 222 ms 12352 KB n = 199993
4 Correct 147 ms 10428 KB n = 152076
5 Correct 88 ms 6156 KB n = 93249
6 Correct 169 ms 11720 KB n = 199910
7 Correct 188 ms 12316 KB n = 199999
8 Correct 181 ms 11836 KB n = 199997
9 Correct 187 ms 11240 KB n = 171294
10 Correct 139 ms 10036 KB n = 140872
11 Correct 178 ms 11764 KB n = 199886
12 Correct 203 ms 12316 KB n = 199996
13 Correct 176 ms 11944 KB n = 200000
14 Correct 216 ms 12696 KB n = 199998
15 Correct 196 ms 12152 KB n = 200000
16 Correct 204 ms 12316 KB n = 199998
17 Correct 184 ms 14912 KB n = 200000
18 Correct 201 ms 12084 KB n = 190000
19 Correct 161 ms 13816 KB n = 177777
20 Correct 94 ms 6336 KB n = 100000
21 Correct 210 ms 12344 KB n = 200000
22 Correct 190 ms 12316 KB n = 200000
23 Correct 173 ms 12356 KB n = 200000
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 212 KB n = 2
2 Correct 0 ms 212 KB n = 2
3 Correct 0 ms 212 KB n = 2
4 Correct 1 ms 212 KB n = 2
5 Correct 0 ms 212 KB n = 2
6 Correct 0 ms 212 KB n = 2
7 Correct 1 ms 212 KB n = 3
8 Correct 1 ms 212 KB n = 3
9 Correct 1 ms 212 KB n = 3
10 Correct 0 ms 212 KB n = 8
11 Correct 0 ms 212 KB n = 8
12 Correct 1 ms 308 KB n = 8
13 Correct 1 ms 212 KB n = 8
14 Correct 1 ms 212 KB n = 8
15 Correct 1 ms 212 KB n = 8
16 Correct 1 ms 308 KB n = 8
17 Correct 1 ms 212 KB n = 8
18 Correct 1 ms 304 KB n = 8
19 Correct 1 ms 212 KB n = 3
20 Correct 1 ms 212 KB n = 7
21 Correct 1 ms 212 KB n = 8
22 Correct 1 ms 212 KB n = 8
23 Correct 1 ms 308 KB n = 8
24 Correct 0 ms 212 KB n = 8
25 Correct 1 ms 212 KB n = 8
26 Correct 1 ms 212 KB n = 8
27 Correct 1 ms 212 KB n = 8
28 Correct 1 ms 312 KB n = 8
29 Correct 1 ms 212 KB n = 16
30 Correct 1 ms 308 KB n = 16
31 Correct 1 ms 212 KB n = 16
32 Correct 1 ms 304 KB n = 16
33 Correct 1 ms 312 KB n = 16
34 Correct 1 ms 212 KB n = 16
35 Correct 1 ms 212 KB n = 16
36 Correct 1 ms 212 KB n = 15
37 Correct 1 ms 212 KB n = 8
38 Correct 1 ms 312 KB n = 16
39 Correct 1 ms 308 KB n = 16
40 Correct 1 ms 256 KB n = 9
41 Correct 1 ms 212 KB n = 16
42 Correct 1 ms 308 KB n = 16
43 Correct 1 ms 212 KB n = 16
44 Correct 1 ms 212 KB n = 9
45 Correct 1 ms 212 KB n = 15
46 Correct 1 ms 212 KB n = 16
47 Correct 1 ms 212 KB n = 16
48 Correct 1 ms 308 KB n = 16
49 Correct 207 ms 12324 KB n = 199999
50 Correct 214 ms 12340 KB n = 199991
51 Correct 222 ms 12352 KB n = 199993
52 Correct 147 ms 10428 KB n = 152076
53 Correct 88 ms 6156 KB n = 93249
54 Correct 169 ms 11720 KB n = 199910
55 Correct 188 ms 12316 KB n = 199999
56 Correct 181 ms 11836 KB n = 199997
57 Correct 187 ms 11240 KB n = 171294
58 Correct 139 ms 10036 KB n = 140872
59 Correct 178 ms 11764 KB n = 199886
60 Correct 203 ms 12316 KB n = 199996
61 Correct 176 ms 11944 KB n = 200000
62 Correct 216 ms 12696 KB n = 199998
63 Correct 196 ms 12152 KB n = 200000
64 Correct 204 ms 12316 KB n = 199998
65 Correct 184 ms 14912 KB n = 200000
66 Correct 201 ms 12084 KB n = 190000
67 Correct 161 ms 13816 KB n = 177777
68 Correct 94 ms 6336 KB n = 100000
69 Correct 210 ms 12344 KB n = 200000
70 Correct 190 ms 12316 KB n = 200000
71 Correct 173 ms 12356 KB n = 200000
72 Correct 197 ms 16240 KB n = 200000
73 Correct 212 ms 16216 KB n = 200000
74 Correct 226 ms 16224 KB n = 200000
75 Correct 201 ms 16216 KB n = 200000
76 Correct 184 ms 16216 KB n = 200000
77 Correct 194 ms 14644 KB n = 200000
78 Correct 189 ms 13496 KB n = 200000
79 Correct 207 ms 15088 KB n = 184307
80 Correct 86 ms 6904 KB n = 76040
81 Correct 207 ms 14516 KB n = 199981
82 Correct 224 ms 15544 KB n = 199994
83 Correct 221 ms 14772 KB n = 199996
84 Correct 207 ms 15760 KB n = 199998
85 Correct 212 ms 15180 KB n = 200000
86 Correct 230 ms 15736 KB n = 199998
87 Correct 202 ms 18752 KB n = 200000
88 Correct 218 ms 16704 KB n = 200000
89 Correct 198 ms 18756 KB n = 200000
90 Correct 214 ms 16220 KB n = 200000
91 Correct 226 ms 16184 KB n = 200000
92 Correct 199 ms 16256 KB n = 200000