Submission #139043

# Submission time Handle Problem Language Result Execution time Memory
139043 2019-07-31T08:30:07 Z hamzqq9 Roller Coaster Railroad (IOI16_railroad) C++14
100 / 100
1142 ms 34108 KB
#include "railroad.h"
#include<bits/stdc++.h>
#define st first
#define nd second
#define pb push_back
#define pf push_front
#define ppb pop_back
#define ppf pop_front
#define umax(x,y) x=max(x,y)
#define umin(x,y) x=min(x,y)
#define ll long long
#define ii pair<int,int>
#define iii pair<int,ii>
#define iiii pair<ii,ii>
#define sz(x) ((int) x.size())
#define orta ((bas+son)/2)
#define all(x) x.begin(),x.end()
#define inf 1000000000
#define MOD 1000000007 
#define N 400005
#define LOG 20
#define KOK 300
#define EPS 0.0000001
using namespace std;

int n,cnt;
vector<int> pre,dad;
int tut[N];

struct edge {

	int a,b,c;

};

int find(int x) {return dad[x]=(x==dad[x]?x:find(dad[x]));}

void merge(int x,int y) {

	dad[find(x)]=find(y);

}

long long plan_roller_coaster(std::vector<int> s, std::vector<int> t) {

	map<int,int> mp;

	n=sz(s);

	for(int i=0;i<n;i++) {

		mp[s[i]]=1;
		mp[t[i]]=1;

	}

	mp[inf]=1;

	for(auto& x:mp) {

		x.nd=++cnt;
		tut[cnt]=x.st;

	}

	dad=pre=vector<int>(cnt+5,0);

	for(int i=1;i<=cnt;i++) dad[i]=i;

	for(int i=0;i<n;i++) {

//		cerr<<s[i]<<" "<< t[i]<<"\n";

		s[i]=mp[s[i]];
		t[i]=mp[t[i]];

		merge(s[i],t[i]);

	//	cerr<< "to : \n";

//		cerr<<s[i] <<" "<<t[i]<<"\n";

//		cerr<<"-------------------\n";

		if(s[i]<=t[i]) {

			pre[s[i]]++;
			pre[t[i]]--;

		}
		else {

			pre[t[i]]--;
			pre[s[i]]++;

		}

	}

	ll ans=0;

	vector<edge> q;

	for(int i=1;i<cnt;i++) { 

		pre[i]+=pre[i-1];

//		cerr<<i << " " << pre[i] <<"\n";

		if(pre[i]>1) {

			ans+=(ll)(pre[i]-1)*(tut[i+1]-tut[i]);

		}

		if(pre[i]!=1) merge(i,i+1);

		if(find(i)!=find(i+1)) q.pb({i,i+1,tut[i+1]-tut[i]});

	}

	sort(all(q),[](edge x,edge y) {

		return x.c<y.c;

	});

	for(auto x:q) {

		if(find(x.a)!=find(x.b)) {

			merge(x.a,x.b);

			ans+=x.c;

		}

	}

	return ans;

}
# Verdict Execution time Memory Grader output
1 Correct 2 ms 256 KB n = 2
2 Correct 2 ms 380 KB n = 2
3 Correct 2 ms 380 KB n = 2
4 Correct 2 ms 376 KB n = 2
5 Correct 2 ms 376 KB n = 2
6 Correct 2 ms 256 KB n = 2
7 Correct 2 ms 256 KB n = 3
8 Correct 2 ms 504 KB n = 3
9 Correct 2 ms 256 KB n = 3
10 Correct 2 ms 256 KB n = 8
11 Correct 2 ms 376 KB n = 8
12 Correct 2 ms 504 KB n = 8
13 Correct 2 ms 376 KB n = 8
14 Correct 2 ms 376 KB n = 8
15 Correct 2 ms 376 KB n = 8
16 Correct 2 ms 256 KB n = 8
17 Correct 2 ms 252 KB n = 8
18 Correct 2 ms 256 KB n = 8
19 Correct 2 ms 376 KB n = 3
20 Correct 2 ms 376 KB n = 7
21 Correct 2 ms 376 KB n = 8
22 Correct 2 ms 376 KB n = 8
23 Correct 2 ms 376 KB n = 8
24 Correct 2 ms 256 KB n = 8
25 Correct 2 ms 256 KB n = 8
# Verdict Execution time Memory Grader output
1 Correct 2 ms 256 KB n = 2
2 Correct 2 ms 380 KB n = 2
3 Correct 2 ms 380 KB n = 2
4 Correct 2 ms 376 KB n = 2
5 Correct 2 ms 376 KB n = 2
6 Correct 2 ms 256 KB n = 2
7 Correct 2 ms 256 KB n = 3
8 Correct 2 ms 504 KB n = 3
9 Correct 2 ms 256 KB n = 3
10 Correct 2 ms 256 KB n = 8
11 Correct 2 ms 376 KB n = 8
12 Correct 2 ms 504 KB n = 8
13 Correct 2 ms 376 KB n = 8
14 Correct 2 ms 376 KB n = 8
15 Correct 2 ms 376 KB n = 8
16 Correct 2 ms 256 KB n = 8
17 Correct 2 ms 252 KB n = 8
18 Correct 2 ms 256 KB n = 8
19 Correct 2 ms 376 KB n = 3
20 Correct 2 ms 376 KB n = 7
21 Correct 2 ms 376 KB n = 8
22 Correct 2 ms 376 KB n = 8
23 Correct 2 ms 376 KB n = 8
24 Correct 2 ms 256 KB n = 8
25 Correct 2 ms 256 KB n = 8
26 Correct 2 ms 256 KB n = 8
27 Correct 2 ms 256 KB n = 8
28 Correct 2 ms 256 KB n = 8
29 Correct 2 ms 256 KB n = 16
30 Correct 2 ms 256 KB n = 16
31 Correct 2 ms 256 KB n = 16
32 Correct 2 ms 376 KB n = 16
33 Correct 2 ms 256 KB n = 16
34 Correct 2 ms 256 KB n = 16
35 Correct 2 ms 400 KB n = 16
36 Correct 2 ms 376 KB n = 15
37 Correct 2 ms 252 KB n = 8
38 Correct 2 ms 256 KB n = 16
39 Correct 2 ms 252 KB n = 16
40 Correct 2 ms 376 KB n = 9
41 Correct 2 ms 376 KB n = 16
42 Correct 2 ms 376 KB n = 16
43 Correct 2 ms 376 KB n = 16
44 Correct 2 ms 380 KB n = 9
45 Correct 2 ms 376 KB n = 15
46 Correct 2 ms 256 KB n = 16
47 Correct 2 ms 364 KB n = 16
48 Correct 2 ms 256 KB n = 16
# Verdict Execution time Memory Grader output
1 Correct 1072 ms 27240 KB n = 199999
2 Correct 1142 ms 27196 KB n = 199991
3 Correct 910 ms 27336 KB n = 199993
4 Correct 598 ms 20748 KB n = 152076
5 Correct 304 ms 12920 KB n = 93249
6 Correct 719 ms 22944 KB n = 199910
7 Correct 718 ms 26696 KB n = 199999
8 Correct 644 ms 23008 KB n = 199997
9 Correct 688 ms 23348 KB n = 171294
10 Correct 554 ms 19436 KB n = 140872
11 Correct 747 ms 23300 KB n = 199886
12 Correct 718 ms 27576 KB n = 199996
13 Correct 655 ms 24504 KB n = 200000
14 Correct 738 ms 28916 KB n = 199998
15 Correct 640 ms 27888 KB n = 200000
16 Correct 654 ms 29200 KB n = 199998
17 Correct 681 ms 30068 KB n = 200000
18 Correct 677 ms 25904 KB n = 190000
19 Correct 667 ms 26744 KB n = 177777
20 Correct 279 ms 13848 KB n = 100000
21 Correct 734 ms 26996 KB n = 200000
22 Correct 817 ms 30220 KB n = 200000
23 Correct 911 ms 30204 KB n = 200000
# Verdict Execution time Memory Grader output
1 Correct 2 ms 256 KB n = 2
2 Correct 2 ms 380 KB n = 2
3 Correct 2 ms 380 KB n = 2
4 Correct 2 ms 376 KB n = 2
5 Correct 2 ms 376 KB n = 2
6 Correct 2 ms 256 KB n = 2
7 Correct 2 ms 256 KB n = 3
8 Correct 2 ms 504 KB n = 3
9 Correct 2 ms 256 KB n = 3
10 Correct 2 ms 256 KB n = 8
11 Correct 2 ms 376 KB n = 8
12 Correct 2 ms 504 KB n = 8
13 Correct 2 ms 376 KB n = 8
14 Correct 2 ms 376 KB n = 8
15 Correct 2 ms 376 KB n = 8
16 Correct 2 ms 256 KB n = 8
17 Correct 2 ms 252 KB n = 8
18 Correct 2 ms 256 KB n = 8
19 Correct 2 ms 376 KB n = 3
20 Correct 2 ms 376 KB n = 7
21 Correct 2 ms 376 KB n = 8
22 Correct 2 ms 376 KB n = 8
23 Correct 2 ms 376 KB n = 8
24 Correct 2 ms 256 KB n = 8
25 Correct 2 ms 256 KB n = 8
26 Correct 2 ms 256 KB n = 8
27 Correct 2 ms 256 KB n = 8
28 Correct 2 ms 256 KB n = 8
29 Correct 2 ms 256 KB n = 16
30 Correct 2 ms 256 KB n = 16
31 Correct 2 ms 256 KB n = 16
32 Correct 2 ms 376 KB n = 16
33 Correct 2 ms 256 KB n = 16
34 Correct 2 ms 256 KB n = 16
35 Correct 2 ms 400 KB n = 16
36 Correct 2 ms 376 KB n = 15
37 Correct 2 ms 252 KB n = 8
38 Correct 2 ms 256 KB n = 16
39 Correct 2 ms 252 KB n = 16
40 Correct 2 ms 376 KB n = 9
41 Correct 2 ms 376 KB n = 16
42 Correct 2 ms 376 KB n = 16
43 Correct 2 ms 376 KB n = 16
44 Correct 2 ms 380 KB n = 9
45 Correct 2 ms 376 KB n = 15
46 Correct 2 ms 256 KB n = 16
47 Correct 2 ms 364 KB n = 16
48 Correct 2 ms 256 KB n = 16
49 Correct 1072 ms 27240 KB n = 199999
50 Correct 1142 ms 27196 KB n = 199991
51 Correct 910 ms 27336 KB n = 199993
52 Correct 598 ms 20748 KB n = 152076
53 Correct 304 ms 12920 KB n = 93249
54 Correct 719 ms 22944 KB n = 199910
55 Correct 718 ms 26696 KB n = 199999
56 Correct 644 ms 23008 KB n = 199997
57 Correct 688 ms 23348 KB n = 171294
58 Correct 554 ms 19436 KB n = 140872
59 Correct 747 ms 23300 KB n = 199886
60 Correct 718 ms 27576 KB n = 199996
61 Correct 655 ms 24504 KB n = 200000
62 Correct 738 ms 28916 KB n = 199998
63 Correct 640 ms 27888 KB n = 200000
64 Correct 654 ms 29200 KB n = 199998
65 Correct 681 ms 30068 KB n = 200000
66 Correct 677 ms 25904 KB n = 190000
67 Correct 667 ms 26744 KB n = 177777
68 Correct 279 ms 13848 KB n = 100000
69 Correct 734 ms 26996 KB n = 200000
70 Correct 817 ms 30220 KB n = 200000
71 Correct 911 ms 30204 KB n = 200000
72 Correct 1112 ms 30996 KB n = 200000
73 Correct 866 ms 30840 KB n = 200000
74 Correct 880 ms 30968 KB n = 200000
75 Correct 700 ms 30892 KB n = 200000
76 Correct 708 ms 30916 KB n = 200000
77 Correct 416 ms 19248 KB n = 200000
78 Correct 439 ms 22384 KB n = 200000
79 Correct 791 ms 28240 KB n = 184307
80 Correct 233 ms 12024 KB n = 76040
81 Correct 681 ms 25720 KB n = 199981
82 Correct 654 ms 30340 KB n = 199994
83 Correct 639 ms 27424 KB n = 199996
84 Correct 625 ms 31952 KB n = 199998
85 Correct 637 ms 30832 KB n = 200000
86 Correct 681 ms 31948 KB n = 199998
87 Correct 750 ms 34048 KB n = 200000
88 Correct 712 ms 31660 KB n = 200000
89 Correct 691 ms 33980 KB n = 200000
90 Correct 706 ms 30940 KB n = 200000
91 Correct 816 ms 34108 KB n = 200000
92 Correct 888 ms 34064 KB n = 200000