Submission #591588

# Submission time Handle Problem Language Result Execution time Memory
591588 2022-07-07T16:18:10 Z knon0501 Roller Coaster Railroad (IOI16_railroad) C++14
100 / 100
442 ms 47764 KB
#include "railroad.h"
#include <bits/stdc++.h>
using namespace std;
const int MX=4e5+5;

long long deg[MX];
int vis[MX];
vector<int> a[MX];
int p[MX];
int f(int x){
    return x==p[x] ? x:p[x]=f(p[x]);
}
long long plan_roller_coaster(std::vector<int> s, std::vector<int> t) {
    int n = (int) s.size();
    vector<long long> v;
    for(int i=0 ; i<n ; i++){
        v.push_back(s[i]);
        v.push_back(t[i]);
    }
    sort(v.begin(),v.end());

    v.erase(unique(v.begin(),v.end()),v.end());

    for(int i=0 ; i<n ; i++){
        deg[lower_bound(v.begin(),v.end(),s[i])-v.begin()]++;
        deg[lower_bound(v.begin(),v.end(),t[i])-v.begin()]--;
        a[lower_bound(v.begin(), v.end(), s[i]) - v.begin()].push_back(lower_bound(v.begin(), v.end(), t[i]) - v.begin());
    }
    if(v.size()==1)return 0;

    long long ans=0;
    if(deg[0]>1){
        a[1].push_back(0);
        ans+=(v[1]-v[0])*(deg[0]-1);
    }
    if(deg[0]<=0)a[0].push_back(1);
    deg[1]+=deg[0]-1;
    for(int i=1 ; i<(int)v.size()-1 ; i++){
        if(deg[i]<0){
            a[i].push_back(i+1);
        }
        if(deg[i]>0){
            a[i+1].push_back(i);
            ans+=deg[i]*(v[i+1]-v[i]);
        }
        deg[i+1]+=deg[i];
    }

    
    for(int i=0 ; i<v.size() ; i++){
        p[i]=i;
    }
    for(int i=0 ; i<v.size() ; i++){
        for(auto x: a[i]){
            p[f(x)]=f(i);
        }
    }
    vector<pair<long long,int>> b;
    for(int i=0 ; i<v.size()-1 ; i++){
        b.push_back({v[i+1]-v[i],i});
    }
    sort(b.begin(),b.end());
    
    for(auto x: b){
        int i=x.second;
        if(f(i)!=f(i+1)){
            p[f(i)]=f(i+1);
            ans+=v[i+1]-v[i];
        }
    }
    return ans;
}

Compilation message

railroad.cpp: In function 'long long int plan_roller_coaster(std::vector<int>, std::vector<int>)':
railroad.cpp:50:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   50 |     for(int i=0 ; i<v.size() ; i++){
      |                   ~^~~~~~~~~
railroad.cpp:53:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   53 |     for(int i=0 ; i<v.size() ; i++){
      |                   ~^~~~~~~~~
railroad.cpp:59:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   59 |     for(int i=0 ; i<v.size()-1 ; i++){
      |                   ~^~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 6 ms 9684 KB n = 2
2 Correct 5 ms 9684 KB n = 2
3 Correct 6 ms 9684 KB n = 2
4 Correct 5 ms 9684 KB n = 2
5 Correct 6 ms 9684 KB n = 2
6 Correct 6 ms 9600 KB n = 2
7 Correct 5 ms 9624 KB n = 3
8 Correct 5 ms 9716 KB n = 3
9 Correct 5 ms 9684 KB n = 3
10 Correct 5 ms 9684 KB n = 8
11 Correct 6 ms 9684 KB n = 8
12 Correct 6 ms 9684 KB n = 8
13 Correct 6 ms 9684 KB n = 8
14 Correct 5 ms 9644 KB n = 8
15 Correct 5 ms 9712 KB n = 8
16 Correct 6 ms 9684 KB n = 8
17 Correct 6 ms 9684 KB n = 8
18 Correct 5 ms 9684 KB n = 8
19 Correct 6 ms 9684 KB n = 3
20 Correct 7 ms 9684 KB n = 7
21 Correct 5 ms 9716 KB n = 8
22 Correct 5 ms 9712 KB n = 8
23 Correct 5 ms 9684 KB n = 8
24 Correct 5 ms 9672 KB n = 8
25 Correct 6 ms 9680 KB n = 8
# Verdict Execution time Memory Grader output
1 Correct 6 ms 9684 KB n = 2
2 Correct 5 ms 9684 KB n = 2
3 Correct 6 ms 9684 KB n = 2
4 Correct 5 ms 9684 KB n = 2
5 Correct 6 ms 9684 KB n = 2
6 Correct 6 ms 9600 KB n = 2
7 Correct 5 ms 9624 KB n = 3
8 Correct 5 ms 9716 KB n = 3
9 Correct 5 ms 9684 KB n = 3
10 Correct 5 ms 9684 KB n = 8
11 Correct 6 ms 9684 KB n = 8
12 Correct 6 ms 9684 KB n = 8
13 Correct 6 ms 9684 KB n = 8
14 Correct 5 ms 9644 KB n = 8
15 Correct 5 ms 9712 KB n = 8
16 Correct 6 ms 9684 KB n = 8
17 Correct 6 ms 9684 KB n = 8
18 Correct 5 ms 9684 KB n = 8
19 Correct 6 ms 9684 KB n = 3
20 Correct 7 ms 9684 KB n = 7
21 Correct 5 ms 9716 KB n = 8
22 Correct 5 ms 9712 KB n = 8
23 Correct 5 ms 9684 KB n = 8
24 Correct 5 ms 9672 KB n = 8
25 Correct 6 ms 9680 KB n = 8
26 Correct 5 ms 9684 KB n = 8
27 Correct 5 ms 9684 KB n = 8
28 Correct 5 ms 9684 KB n = 8
29 Correct 7 ms 9660 KB n = 16
30 Correct 6 ms 9684 KB n = 16
31 Correct 5 ms 9684 KB n = 16
32 Correct 5 ms 9716 KB n = 16
33 Correct 5 ms 9684 KB n = 16
34 Correct 7 ms 9684 KB n = 16
35 Correct 7 ms 9712 KB n = 16
36 Correct 6 ms 9684 KB n = 15
37 Correct 6 ms 9684 KB n = 8
38 Correct 6 ms 9708 KB n = 16
39 Correct 6 ms 9684 KB n = 16
40 Correct 7 ms 9684 KB n = 9
41 Correct 5 ms 9684 KB n = 16
42 Correct 5 ms 9684 KB n = 16
43 Correct 6 ms 9684 KB n = 16
44 Correct 5 ms 9704 KB n = 9
45 Correct 5 ms 9684 KB n = 15
46 Correct 5 ms 9684 KB n = 16
47 Correct 5 ms 9684 KB n = 16
48 Correct 6 ms 9632 KB n = 16
# Verdict Execution time Memory Grader output
1 Correct 368 ms 42748 KB n = 199999
2 Correct 373 ms 42796 KB n = 199991
3 Correct 381 ms 43096 KB n = 199993
4 Correct 260 ms 37384 KB n = 152076
5 Correct 143 ms 26216 KB n = 93249
6 Correct 291 ms 40308 KB n = 199910
7 Correct 336 ms 43000 KB n = 199999
8 Correct 277 ms 40456 KB n = 199997
9 Correct 305 ms 40044 KB n = 171294
10 Correct 227 ms 36292 KB n = 140872
11 Correct 301 ms 40300 KB n = 199886
12 Correct 315 ms 42840 KB n = 199996
13 Correct 300 ms 40908 KB n = 200000
14 Correct 308 ms 42676 KB n = 199998
15 Correct 306 ms 42296 KB n = 200000
16 Correct 331 ms 42840 KB n = 199998
17 Correct 339 ms 45136 KB n = 200000
18 Correct 321 ms 42004 KB n = 190000
19 Correct 277 ms 40368 KB n = 177777
20 Correct 152 ms 26748 KB n = 100000
21 Correct 317 ms 42876 KB n = 200000
22 Correct 324 ms 42876 KB n = 200000
23 Correct 305 ms 42880 KB n = 200000
# Verdict Execution time Memory Grader output
1 Correct 6 ms 9684 KB n = 2
2 Correct 5 ms 9684 KB n = 2
3 Correct 6 ms 9684 KB n = 2
4 Correct 5 ms 9684 KB n = 2
5 Correct 6 ms 9684 KB n = 2
6 Correct 6 ms 9600 KB n = 2
7 Correct 5 ms 9624 KB n = 3
8 Correct 5 ms 9716 KB n = 3
9 Correct 5 ms 9684 KB n = 3
10 Correct 5 ms 9684 KB n = 8
11 Correct 6 ms 9684 KB n = 8
12 Correct 6 ms 9684 KB n = 8
13 Correct 6 ms 9684 KB n = 8
14 Correct 5 ms 9644 KB n = 8
15 Correct 5 ms 9712 KB n = 8
16 Correct 6 ms 9684 KB n = 8
17 Correct 6 ms 9684 KB n = 8
18 Correct 5 ms 9684 KB n = 8
19 Correct 6 ms 9684 KB n = 3
20 Correct 7 ms 9684 KB n = 7
21 Correct 5 ms 9716 KB n = 8
22 Correct 5 ms 9712 KB n = 8
23 Correct 5 ms 9684 KB n = 8
24 Correct 5 ms 9672 KB n = 8
25 Correct 6 ms 9680 KB n = 8
26 Correct 5 ms 9684 KB n = 8
27 Correct 5 ms 9684 KB n = 8
28 Correct 5 ms 9684 KB n = 8
29 Correct 7 ms 9660 KB n = 16
30 Correct 6 ms 9684 KB n = 16
31 Correct 5 ms 9684 KB n = 16
32 Correct 5 ms 9716 KB n = 16
33 Correct 5 ms 9684 KB n = 16
34 Correct 7 ms 9684 KB n = 16
35 Correct 7 ms 9712 KB n = 16
36 Correct 6 ms 9684 KB n = 15
37 Correct 6 ms 9684 KB n = 8
38 Correct 6 ms 9708 KB n = 16
39 Correct 6 ms 9684 KB n = 16
40 Correct 7 ms 9684 KB n = 9
41 Correct 5 ms 9684 KB n = 16
42 Correct 5 ms 9684 KB n = 16
43 Correct 6 ms 9684 KB n = 16
44 Correct 5 ms 9704 KB n = 9
45 Correct 5 ms 9684 KB n = 15
46 Correct 5 ms 9684 KB n = 16
47 Correct 5 ms 9684 KB n = 16
48 Correct 6 ms 9632 KB n = 16
49 Correct 368 ms 42748 KB n = 199999
50 Correct 373 ms 42796 KB n = 199991
51 Correct 381 ms 43096 KB n = 199993
52 Correct 260 ms 37384 KB n = 152076
53 Correct 143 ms 26216 KB n = 93249
54 Correct 291 ms 40308 KB n = 199910
55 Correct 336 ms 43000 KB n = 199999
56 Correct 277 ms 40456 KB n = 199997
57 Correct 305 ms 40044 KB n = 171294
58 Correct 227 ms 36292 KB n = 140872
59 Correct 301 ms 40300 KB n = 199886
60 Correct 315 ms 42840 KB n = 199996
61 Correct 300 ms 40908 KB n = 200000
62 Correct 308 ms 42676 KB n = 199998
63 Correct 306 ms 42296 KB n = 200000
64 Correct 331 ms 42840 KB n = 199998
65 Correct 339 ms 45136 KB n = 200000
66 Correct 321 ms 42004 KB n = 190000
67 Correct 277 ms 40368 KB n = 177777
68 Correct 152 ms 26748 KB n = 100000
69 Correct 317 ms 42876 KB n = 200000
70 Correct 324 ms 42876 KB n = 200000
71 Correct 305 ms 42880 KB n = 200000
72 Correct 341 ms 43196 KB n = 200000
73 Correct 356 ms 43040 KB n = 200000
74 Correct 360 ms 45480 KB n = 200000
75 Correct 322 ms 45384 KB n = 200000
76 Correct 310 ms 45440 KB n = 200000
77 Correct 232 ms 34544 KB n = 200000
78 Correct 255 ms 34540 KB n = 200000
79 Correct 301 ms 43056 KB n = 184307
80 Correct 105 ms 24288 KB n = 76040
81 Correct 311 ms 41372 KB n = 199981
82 Correct 314 ms 44476 KB n = 199994
83 Correct 313 ms 42012 KB n = 199996
84 Correct 327 ms 44264 KB n = 199998
85 Correct 342 ms 43904 KB n = 200000
86 Correct 325 ms 44848 KB n = 199998
87 Correct 355 ms 47764 KB n = 200000
88 Correct 359 ms 45824 KB n = 200000
89 Correct 442 ms 45368 KB n = 200000
90 Correct 377 ms 45392 KB n = 200000
91 Correct 362 ms 45408 KB n = 200000
92 Correct 316 ms 45368 KB n = 200000