Submission #24499

# Submission time Handle Problem Language Result Execution time Memory
24499 2017-06-09T12:21:11 Z Jeyeon Si(#1042) Roller Coaster Railroad (IOI16_railroad) C++
100 / 100
276 ms 24748 KB
#include "railroad.h"
#include <vector>
#include <algorithm>

using namespace std;

typedef long long ll;

int n, nd = 1000000000;
vector<ll> comp;
int psum[400100];
int par[400100];
int u[400100], v[400100], ord[400100];
ll w[400100];
ll res;

int fin(int a) {
	if (par[a]==a) return a;
	return (par[a] = fin(par[a]));
}
void uni(int a, int b) {
	a = fin(a); b = fin(b);
	par[a] = b;
}
bool cmp(int a, int b) {
	return w[a]<w[b];
}
ll plan_roller_coaster(vector<int> s, vector<int> t) {
    n = s.size();
	int i, p = 0;
	for (i=0;i<n;i++) comp.push_back(s[i]);
	for (i=0;i<n;i++) comp.push_back(t[i]);
	comp.push_back(1); comp.push_back(nd);
	sort(comp.begin(),comp.end());
	comp.erase(unique(comp.begin(),comp.end()),comp.end());
	for (i=0;i<n;i++) s[i] = lower_bound(comp.begin(),comp.end(),s[i])-comp.begin();
	for (i=0;i<n;i++) t[i] = lower_bound(comp.begin(),comp.end(),t[i])-comp.begin();
	s.push_back((int)comp.size()-1);
	t.push_back(0);
	n++;
	for (i=0;i<n;i++) {psum[s[i]]++; psum[t[i]]--;}
	for (i=1;i<(int)comp.size()-1;i++) psum[i] += psum[i-1];
	for (i=0;i<comp.size();i++) par[i] = i;
	for (i=0;i<n;i++) uni(s[i],t[i]);
	for (i=0;i<(int)comp.size()-1;i++) {
		if (psum[i]>0) res += (comp[i+1]-comp[i])*psum[i];
		if (psum[i]!=0) uni(i,i+1);
	}
	for (i=0;i<(int)comp.size()-1;i++) {
		if (fin(i)!=fin(i+1)) {u[p] = fin(i); v[p] = fin(i+1); w[p] = comp[i+1]-comp[i]; p++;}
	}
	for (i=0;i<p;i++) ord[i] = i;
	sort(ord,ord+p,cmp);
	for (i=0;i<p;i++) {
		if (fin(u[ord[i]])!=fin(v[ord[i]])) {
			uni(u[ord[i]],v[ord[i]]);
			res += w[ord[i]];
		}
	}

    return res;
}

Compilation message

railroad.cpp: In function 'll plan_roller_coaster(std::vector<int>, std::vector<int>)':
railroad.cpp:43:12: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (i=0;i<comp.size();i++) par[i] = i;
            ^
# Verdict Execution time Memory Grader output
1 Correct 0 ms 12880 KB n = 2
2 Correct 0 ms 12880 KB n = 2
3 Correct 0 ms 12880 KB n = 2
4 Correct 0 ms 12880 KB n = 2
5 Correct 0 ms 12880 KB n = 2
6 Correct 0 ms 12880 KB n = 2
7 Correct 0 ms 12880 KB n = 3
8 Correct 0 ms 12880 KB n = 3
9 Correct 0 ms 12880 KB n = 3
10 Correct 0 ms 12880 KB n = 8
11 Correct 0 ms 12880 KB n = 8
12 Correct 0 ms 12880 KB n = 8
13 Correct 0 ms 12880 KB n = 8
14 Correct 0 ms 12880 KB n = 8
15 Correct 0 ms 12880 KB n = 8
16 Correct 0 ms 12880 KB n = 8
17 Correct 0 ms 12880 KB n = 8
18 Correct 0 ms 12880 KB n = 8
19 Correct 0 ms 12880 KB n = 3
20 Correct 0 ms 12880 KB n = 7
21 Correct 0 ms 12880 KB n = 8
22 Correct 0 ms 12880 KB n = 8
23 Correct 0 ms 12880 KB n = 8
24 Correct 0 ms 12880 KB n = 8
25 Correct 0 ms 12880 KB n = 8
# Verdict Execution time Memory Grader output
1 Correct 0 ms 12880 KB n = 2
2 Correct 0 ms 12880 KB n = 2
3 Correct 0 ms 12880 KB n = 2
4 Correct 0 ms 12880 KB n = 2
5 Correct 0 ms 12880 KB n = 2
6 Correct 0 ms 12880 KB n = 2
7 Correct 0 ms 12880 KB n = 3
8 Correct 0 ms 12880 KB n = 3
9 Correct 0 ms 12880 KB n = 3
10 Correct 0 ms 12880 KB n = 8
11 Correct 0 ms 12880 KB n = 8
12 Correct 0 ms 12880 KB n = 8
13 Correct 0 ms 12880 KB n = 8
14 Correct 0 ms 12880 KB n = 8
15 Correct 0 ms 12880 KB n = 8
16 Correct 0 ms 12880 KB n = 8
17 Correct 0 ms 12880 KB n = 8
18 Correct 0 ms 12880 KB n = 8
19 Correct 0 ms 12880 KB n = 3
20 Correct 0 ms 12880 KB n = 7
21 Correct 0 ms 12880 KB n = 8
22 Correct 0 ms 12880 KB n = 8
23 Correct 0 ms 12880 KB n = 8
24 Correct 0 ms 12880 KB n = 8
25 Correct 0 ms 12880 KB n = 8
26 Correct 0 ms 12880 KB n = 8
27 Correct 0 ms 12880 KB n = 8
28 Correct 0 ms 12880 KB n = 8
29 Correct 0 ms 12880 KB n = 16
30 Correct 0 ms 12880 KB n = 16
31 Correct 0 ms 12880 KB n = 16
32 Correct 0 ms 12880 KB n = 16
33 Correct 0 ms 12880 KB n = 16
34 Correct 0 ms 12880 KB n = 16
35 Correct 0 ms 12880 KB n = 16
36 Correct 0 ms 12880 KB n = 15
37 Correct 0 ms 12880 KB n = 8
38 Correct 0 ms 12880 KB n = 16
39 Correct 0 ms 12880 KB n = 16
40 Correct 0 ms 12880 KB n = 9
41 Correct 0 ms 12880 KB n = 16
42 Correct 0 ms 12880 KB n = 16
43 Correct 0 ms 12880 KB n = 16
44 Correct 0 ms 12880 KB n = 9
45 Correct 0 ms 12880 KB n = 15
46 Correct 0 ms 12880 KB n = 16
47 Correct 0 ms 12880 KB n = 16
48 Correct 0 ms 12880 KB n = 16
# Verdict Execution time Memory Grader output
1 Correct 226 ms 22532 KB n = 199999
2 Correct 266 ms 22532 KB n = 199991
3 Correct 256 ms 22532 KB n = 199993
4 Correct 219 ms 21492 KB n = 152076
5 Correct 99 ms 17568 KB n = 93249
6 Correct 216 ms 22532 KB n = 199910
7 Correct 236 ms 22532 KB n = 199999
8 Correct 216 ms 22532 KB n = 199997
9 Correct 203 ms 21796 KB n = 171294
10 Correct 163 ms 21316 KB n = 140872
11 Correct 229 ms 22532 KB n = 199886
12 Correct 259 ms 22532 KB n = 199996
13 Correct 206 ms 22532 KB n = 200000
14 Correct 213 ms 23448 KB n = 199998
15 Correct 219 ms 22860 KB n = 200000
16 Correct 243 ms 22712 KB n = 199998
17 Correct 199 ms 24748 KB n = 200000
18 Correct 203 ms 22256 KB n = 190000
19 Correct 199 ms 23876 KB n = 177777
20 Correct 123 ms 17748 KB n = 100000
21 Correct 253 ms 22532 KB n = 200000
22 Correct 273 ms 22532 KB n = 200000
23 Correct 233 ms 22532 KB n = 200000
# Verdict Execution time Memory Grader output
1 Correct 0 ms 12880 KB n = 2
2 Correct 0 ms 12880 KB n = 2
3 Correct 0 ms 12880 KB n = 2
4 Correct 0 ms 12880 KB n = 2
5 Correct 0 ms 12880 KB n = 2
6 Correct 0 ms 12880 KB n = 2
7 Correct 0 ms 12880 KB n = 3
8 Correct 0 ms 12880 KB n = 3
9 Correct 0 ms 12880 KB n = 3
10 Correct 0 ms 12880 KB n = 8
11 Correct 0 ms 12880 KB n = 8
12 Correct 0 ms 12880 KB n = 8
13 Correct 0 ms 12880 KB n = 8
14 Correct 0 ms 12880 KB n = 8
15 Correct 0 ms 12880 KB n = 8
16 Correct 0 ms 12880 KB n = 8
17 Correct 0 ms 12880 KB n = 8
18 Correct 0 ms 12880 KB n = 8
19 Correct 0 ms 12880 KB n = 3
20 Correct 0 ms 12880 KB n = 7
21 Correct 0 ms 12880 KB n = 8
22 Correct 0 ms 12880 KB n = 8
23 Correct 0 ms 12880 KB n = 8
24 Correct 0 ms 12880 KB n = 8
25 Correct 0 ms 12880 KB n = 8
26 Correct 0 ms 12880 KB n = 8
27 Correct 0 ms 12880 KB n = 8
28 Correct 0 ms 12880 KB n = 8
29 Correct 0 ms 12880 KB n = 16
30 Correct 0 ms 12880 KB n = 16
31 Correct 0 ms 12880 KB n = 16
32 Correct 0 ms 12880 KB n = 16
33 Correct 0 ms 12880 KB n = 16
34 Correct 0 ms 12880 KB n = 16
35 Correct 0 ms 12880 KB n = 16
36 Correct 0 ms 12880 KB n = 15
37 Correct 0 ms 12880 KB n = 8
38 Correct 0 ms 12880 KB n = 16
39 Correct 0 ms 12880 KB n = 16
40 Correct 0 ms 12880 KB n = 9
41 Correct 0 ms 12880 KB n = 16
42 Correct 0 ms 12880 KB n = 16
43 Correct 0 ms 12880 KB n = 16
44 Correct 0 ms 12880 KB n = 9
45 Correct 0 ms 12880 KB n = 15
46 Correct 0 ms 12880 KB n = 16
47 Correct 0 ms 12880 KB n = 16
48 Correct 0 ms 12880 KB n = 16
49 Correct 226 ms 22532 KB n = 199999
50 Correct 266 ms 22532 KB n = 199991
51 Correct 256 ms 22532 KB n = 199993
52 Correct 219 ms 21492 KB n = 152076
53 Correct 99 ms 17568 KB n = 93249
54 Correct 216 ms 22532 KB n = 199910
55 Correct 236 ms 22532 KB n = 199999
56 Correct 216 ms 22532 KB n = 199997
57 Correct 203 ms 21796 KB n = 171294
58 Correct 163 ms 21316 KB n = 140872
59 Correct 229 ms 22532 KB n = 199886
60 Correct 259 ms 22532 KB n = 199996
61 Correct 206 ms 22532 KB n = 200000
62 Correct 213 ms 23448 KB n = 199998
63 Correct 219 ms 22860 KB n = 200000
64 Correct 243 ms 22712 KB n = 199998
65 Correct 199 ms 24748 KB n = 200000
66 Correct 203 ms 22256 KB n = 190000
67 Correct 199 ms 23876 KB n = 177777
68 Correct 123 ms 17748 KB n = 100000
69 Correct 253 ms 22532 KB n = 200000
70 Correct 273 ms 22532 KB n = 200000
71 Correct 233 ms 22532 KB n = 200000
72 Correct 236 ms 22532 KB n = 200000
73 Correct 246 ms 22532 KB n = 200000
74 Correct 249 ms 22532 KB n = 200000
75 Correct 223 ms 22532 KB n = 200000
76 Correct 226 ms 22532 KB n = 200000
77 Correct 223 ms 24744 KB n = 200000
78 Correct 259 ms 22532 KB n = 200000
79 Correct 219 ms 22096 KB n = 184307
80 Correct 89 ms 17236 KB n = 76040
81 Correct 199 ms 22532 KB n = 199981
82 Correct 226 ms 22532 KB n = 199994
83 Correct 236 ms 22532 KB n = 199996
84 Correct 216 ms 23448 KB n = 199998
85 Correct 216 ms 22864 KB n = 200000
86 Correct 276 ms 22700 KB n = 199998
87 Correct 229 ms 24744 KB n = 200000
88 Correct 276 ms 22532 KB n = 200000
89 Correct 186 ms 24744 KB n = 200000
90 Correct 223 ms 22532 KB n = 200000
91 Correct 256 ms 22532 KB n = 200000
92 Correct 226 ms 22532 KB n = 200000