Submission #54825

# Submission time Handle Problem Language Result Execution time Memory
54825 2018-07-05T07:45:39 Z WA_TLE Roller Coaster Railroad (IOI16_railroad) C++14
100 / 100
389 ms 168580 KB
#include<deque>
#include<queue>
#include<vector>
#include<algorithm>
#include<iostream>
#include<set>
#include<cmath>
#include<tuple>
#include<string>
#include<chrono>
#include<functional>
#include<iterator>
#include<random>
#include<unordered_set>
#include<array>
#include<map>
#include<iomanip>
#include<assert.h>
#include<bitset>
#include<stack>
using namespace std;
typedef long long int llint;
typedef long double lldo;
#define mp make_pair
#define mt make_tuple
#define pub push_back
#define puf push_front
#define pob pop_back
#define pof pop_front
#define fir first
#define sec second
#define res resize
#define ins insert
#define era erase
/*
cout<<setprecision(20)
cin.tie(0);
ios::sync_with_stdio(false);
*/
const llint mod=1e9+7;
const llint big=2.19e15+1;
const long double pai=3.141592653589793238462643383279502884197;
const long double eps=1e-15;
template <class T,class U>void mineq(T& a,U b){if(a>b){a=b;}}
template <class T,class U>void maxeq(T& a,U b){if(a<b){a=b;}}
llint gcd(llint a,llint b){if(a%b==0){return b;}else return gcd(b,a%b);}
//llint lcm(llint a,llint b){return a/gcd(a,b)*b;}
template<class T> void SO(T& ve){sort(ve.begin(),ve.end());}
template<class T> void REV(T& ve){reverse(ve.begin(),ve.end());}
template<class T>int LBI(vector<T>&ar,T in){return lower_bound(ar.begin(),ar.end(),in)-ar.begin();}
template<class T>int UBI(vector<T>&ar,T in){return upper_bound(ar.begin(),ar.end(),in)-ar.begin();}
long long plan_roller_coaster(std::vector<int> s, std::vector<int> t) {
	//うまく辺を張ってグラフを作る
	s.pub(mod);t.pub(0);
	llint n=s.size(),ans=0;int i,j;
	vector<pair<llint,int>>atu(n*2+1);
	//連結性の判定をする 
	
	for(i=0;i<n;i++){atu[i]=mp(s[i],-1);atu[i+n]=mp(t[i],1);}
	atu[n+n]=mp(mod,1333);
	SO(atu);
	vector<tuple<llint,int,int>>hen;//張る辺
	hen.reserve(3*n+5);
	llint gen=0;
	for(i=0;i<n+n;i++){
		gen+=atu[i].sec;
		if(gen<0){ans-=gen*(atu[i+1].fir-atu[i].fir);}
		
		if(gen!=0){hen.pub(mt(0LL,i,i+1));}
		else{hen.pub(mt(atu[i+1].fir-atu[i].fir,i,i+1));}
	}
	for(i=0;i<n;i++){hen.pub(mt(0LL,LBI(atu,mp((llint)s[i],-1)),LBI(atu,mp((llint)t[i],1))));}
	//連結にしなければいけない
	SO(hen);
	vector<int>uni(n+n);//union-find
	for(i=0;i<n+n;i++){uni[i]=i;}
	for(auto it:hen){
		llint c;int a,b,t;tie(c,a,b)=it;
		if(max(a,b)>=n+n){continue;}
		while(a!=uni[a]){a=uni[a];}
		while(b!=uni[b]){b=uni[b];}
		if(a!=b){ans+=c;}
		//すべてをaに集約する
		t=get<1>(it);
		while(t!=a){int g=t;t=uni[g];uni[g]=a;}
		t=get<2>(it);
		while(t!=a){int g=t;t=uni[g];uni[g]=a;}
	}
	return ans;
}

Compilation message

railroad.cpp: In function 'long long int plan_roller_coaster(std::vector<int>, std::vector<int>)':
railroad.cpp:55:31: warning: unused variable 'j' [-Wunused-variable]
  llint n=s.size(),ans=0;int i,j;
                               ^
# Verdict Execution time Memory Grader output
1 Correct 3 ms 384 KB n = 2
2 Correct 3 ms 620 KB n = 2
3 Correct 2 ms 688 KB n = 2
4 Correct 2 ms 704 KB n = 2
5 Correct 2 ms 760 KB n = 2
6 Correct 3 ms 760 KB n = 2
7 Correct 3 ms 760 KB n = 3
8 Correct 3 ms 760 KB n = 3
9 Correct 3 ms 760 KB n = 3
10 Correct 3 ms 760 KB n = 8
11 Correct 2 ms 760 KB n = 8
12 Correct 3 ms 784 KB n = 8
13 Correct 2 ms 784 KB n = 8
14 Correct 2 ms 900 KB n = 8
15 Correct 3 ms 908 KB n = 8
16 Correct 3 ms 908 KB n = 8
17 Correct 2 ms 908 KB n = 8
18 Correct 2 ms 908 KB n = 8
19 Correct 2 ms 908 KB n = 3
20 Correct 2 ms 908 KB n = 7
21 Correct 2 ms 908 KB n = 8
22 Correct 3 ms 908 KB n = 8
23 Correct 3 ms 908 KB n = 8
24 Correct 2 ms 972 KB n = 8
25 Correct 3 ms 972 KB n = 8
# Verdict Execution time Memory Grader output
1 Correct 3 ms 384 KB n = 2
2 Correct 3 ms 620 KB n = 2
3 Correct 2 ms 688 KB n = 2
4 Correct 2 ms 704 KB n = 2
5 Correct 2 ms 760 KB n = 2
6 Correct 3 ms 760 KB n = 2
7 Correct 3 ms 760 KB n = 3
8 Correct 3 ms 760 KB n = 3
9 Correct 3 ms 760 KB n = 3
10 Correct 3 ms 760 KB n = 8
11 Correct 2 ms 760 KB n = 8
12 Correct 3 ms 784 KB n = 8
13 Correct 2 ms 784 KB n = 8
14 Correct 2 ms 900 KB n = 8
15 Correct 3 ms 908 KB n = 8
16 Correct 3 ms 908 KB n = 8
17 Correct 2 ms 908 KB n = 8
18 Correct 2 ms 908 KB n = 8
19 Correct 2 ms 908 KB n = 3
20 Correct 2 ms 908 KB n = 7
21 Correct 2 ms 908 KB n = 8
22 Correct 3 ms 908 KB n = 8
23 Correct 3 ms 908 KB n = 8
24 Correct 2 ms 972 KB n = 8
25 Correct 3 ms 972 KB n = 8
26 Correct 2 ms 972 KB n = 8
27 Correct 2 ms 972 KB n = 8
28 Correct 2 ms 972 KB n = 8
29 Correct 2 ms 972 KB n = 16
30 Correct 2 ms 972 KB n = 16
31 Correct 2 ms 972 KB n = 16
32 Correct 2 ms 972 KB n = 16
33 Correct 3 ms 972 KB n = 16
34 Correct 4 ms 972 KB n = 16
35 Correct 2 ms 972 KB n = 16
36 Correct 4 ms 972 KB n = 15
37 Correct 2 ms 972 KB n = 8
38 Correct 3 ms 972 KB n = 16
39 Correct 2 ms 972 KB n = 16
40 Correct 2 ms 972 KB n = 9
41 Correct 4 ms 972 KB n = 16
42 Correct 3 ms 972 KB n = 16
43 Correct 3 ms 972 KB n = 16
44 Correct 3 ms 1040 KB n = 9
45 Correct 3 ms 1040 KB n = 15
46 Correct 3 ms 1040 KB n = 16
47 Correct 2 ms 1040 KB n = 16
48 Correct 3 ms 1040 KB n = 16
# Verdict Execution time Memory Grader output
1 Correct 326 ms 25500 KB n = 199999
2 Correct 389 ms 29292 KB n = 199991
3 Correct 298 ms 33268 KB n = 199993
4 Correct 248 ms 33268 KB n = 152076
5 Correct 151 ms 33268 KB n = 93249
6 Correct 316 ms 40280 KB n = 199910
7 Correct 305 ms 43516 KB n = 199999
8 Correct 304 ms 46340 KB n = 199997
9 Correct 275 ms 46440 KB n = 171294
10 Correct 231 ms 46440 KB n = 140872
11 Correct 321 ms 54840 KB n = 199886
12 Correct 315 ms 58076 KB n = 199996
13 Correct 279 ms 61020 KB n = 200000
14 Correct 280 ms 64020 KB n = 199998
15 Correct 286 ms 66968 KB n = 200000
16 Correct 325 ms 70456 KB n = 199998
17 Correct 295 ms 74260 KB n = 200000
18 Correct 313 ms 76936 KB n = 190000
19 Correct 287 ms 79192 KB n = 177777
20 Correct 174 ms 79192 KB n = 100000
21 Correct 320 ms 87348 KB n = 200000
22 Correct 295 ms 91288 KB n = 200000
23 Correct 351 ms 94972 KB n = 200000
# Verdict Execution time Memory Grader output
1 Correct 3 ms 384 KB n = 2
2 Correct 3 ms 620 KB n = 2
3 Correct 2 ms 688 KB n = 2
4 Correct 2 ms 704 KB n = 2
5 Correct 2 ms 760 KB n = 2
6 Correct 3 ms 760 KB n = 2
7 Correct 3 ms 760 KB n = 3
8 Correct 3 ms 760 KB n = 3
9 Correct 3 ms 760 KB n = 3
10 Correct 3 ms 760 KB n = 8
11 Correct 2 ms 760 KB n = 8
12 Correct 3 ms 784 KB n = 8
13 Correct 2 ms 784 KB n = 8
14 Correct 2 ms 900 KB n = 8
15 Correct 3 ms 908 KB n = 8
16 Correct 3 ms 908 KB n = 8
17 Correct 2 ms 908 KB n = 8
18 Correct 2 ms 908 KB n = 8
19 Correct 2 ms 908 KB n = 3
20 Correct 2 ms 908 KB n = 7
21 Correct 2 ms 908 KB n = 8
22 Correct 3 ms 908 KB n = 8
23 Correct 3 ms 908 KB n = 8
24 Correct 2 ms 972 KB n = 8
25 Correct 3 ms 972 KB n = 8
26 Correct 2 ms 972 KB n = 8
27 Correct 2 ms 972 KB n = 8
28 Correct 2 ms 972 KB n = 8
29 Correct 2 ms 972 KB n = 16
30 Correct 2 ms 972 KB n = 16
31 Correct 2 ms 972 KB n = 16
32 Correct 2 ms 972 KB n = 16
33 Correct 3 ms 972 KB n = 16
34 Correct 4 ms 972 KB n = 16
35 Correct 2 ms 972 KB n = 16
36 Correct 4 ms 972 KB n = 15
37 Correct 2 ms 972 KB n = 8
38 Correct 3 ms 972 KB n = 16
39 Correct 2 ms 972 KB n = 16
40 Correct 2 ms 972 KB n = 9
41 Correct 4 ms 972 KB n = 16
42 Correct 3 ms 972 KB n = 16
43 Correct 3 ms 972 KB n = 16
44 Correct 3 ms 1040 KB n = 9
45 Correct 3 ms 1040 KB n = 15
46 Correct 3 ms 1040 KB n = 16
47 Correct 2 ms 1040 KB n = 16
48 Correct 3 ms 1040 KB n = 16
49 Correct 326 ms 25500 KB n = 199999
50 Correct 389 ms 29292 KB n = 199991
51 Correct 298 ms 33268 KB n = 199993
52 Correct 248 ms 33268 KB n = 152076
53 Correct 151 ms 33268 KB n = 93249
54 Correct 316 ms 40280 KB n = 199910
55 Correct 305 ms 43516 KB n = 199999
56 Correct 304 ms 46340 KB n = 199997
57 Correct 275 ms 46440 KB n = 171294
58 Correct 231 ms 46440 KB n = 140872
59 Correct 321 ms 54840 KB n = 199886
60 Correct 315 ms 58076 KB n = 199996
61 Correct 279 ms 61020 KB n = 200000
62 Correct 280 ms 64020 KB n = 199998
63 Correct 286 ms 66968 KB n = 200000
64 Correct 325 ms 70456 KB n = 199998
65 Correct 295 ms 74260 KB n = 200000
66 Correct 313 ms 76936 KB n = 190000
67 Correct 287 ms 79192 KB n = 177777
68 Correct 174 ms 79192 KB n = 100000
69 Correct 320 ms 87348 KB n = 200000
70 Correct 295 ms 91288 KB n = 200000
71 Correct 351 ms 94972 KB n = 200000
72 Correct 295 ms 99036 KB n = 200000
73 Correct 343 ms 102736 KB n = 200000
74 Correct 291 ms 106724 KB n = 200000
75 Correct 335 ms 110460 KB n = 200000
76 Correct 325 ms 114364 KB n = 200000
77 Correct 302 ms 118468 KB n = 200000
78 Correct 319 ms 122084 KB n = 200000
79 Correct 341 ms 123900 KB n = 184307
80 Correct 116 ms 123900 KB n = 76040
81 Correct 313 ms 129720 KB n = 199981
82 Correct 269 ms 132952 KB n = 199994
83 Correct 295 ms 135904 KB n = 199996
84 Correct 321 ms 138876 KB n = 199998
85 Correct 335 ms 142028 KB n = 200000
86 Correct 312 ms 145276 KB n = 199998
87 Correct 288 ms 149148 KB n = 200000
88 Correct 336 ms 153004 KB n = 200000
89 Correct 277 ms 156924 KB n = 200000
90 Correct 350 ms 160776 KB n = 200000
91 Correct 307 ms 164680 KB n = 200000
92 Correct 381 ms 168580 KB n = 200000