Submission #622877

# Submission time Handle Problem Language Result Execution time Memory
622877 2022-08-04T17:35:41 Z leaked Roller Coaster Railroad (IOI16_railroad) C++17
100 / 100
878 ms 63328 KB
#include <bits/stdc++.h>
#include "railroad.h"

#define f first
#define s second
#define vec vector
#define pb push_back
#define all(x) (x).begin(),(x).end()
#define rall(x) (x).rbegin(),(x).rend()
#define pw(x) (1LL<<(x))
#define sz(x) (int)(x).size()
#define m_p make_pair
#define fast_ioi ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);

using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
template<class T> bool umin(T &a,const T &b){return (a>b?a=b,1:0);}
template<class T> bool umax(T &a,const T &b){return (a<b?a=b,1:0);}



const int N=4e5+4;

int p[N];
void make(int v){
    p[v]=v;
}
int get(int v){
    return p[v]=(p[v]==v?v:get(p[v]));
}
int mg(int a,int b){
    a=get(a),b=get(b);
    if(a==b) return 0;
    p[a]=b;
    return 1;
}

ll plan_roller_coaster(std::vector<int> s, std::vector<int> t){
//    assert(false);
    vec<int> x;
//    s.pb(1e9);t.pb(1);
    map<int,int> mp;
    map<int,int> cons;
    map<int,int> id;
    int tt=0;
    for(int i=0;i<sz(s);i++){
//        cout<<s[i]<<' '<<t[i]<<endl;
        mp[s[i]]++;mp[t[i]]--;
    }
    int bl=0,jt=0;
    vec<pii> xs;
    ll ans=0;

    mp[0]--;
    for(auto &z : mp){
//        cout<<z.f<<' '<<z.s<<endl;
        bl+=z.s;
        id[z.f]=tt++;
        ///from
        xs.pb({z.f,bl});
    }

    vec<int> vc;

    for(int i=0;i<sz(xs);i++) make(i);


    for(int i=0;i+1<sz(xs);i++){
//        cout<<xs[i].f<<' '<<xs[i].s<<endl;
        if(xs[i].s>0) ans+=1ll*(xs[i+1].f-xs[i].f)*xs[i].s,mg(i,i+1);
        else if(xs[i].s<0) mg(i,i+1);
    }


    vec<array<int,3>> arr;
    for(int i=0;i<sz(s);i++) mg(id[s[i]],id[t[i]]);

    for(int i=0;i+1<sz(xs);i++){
        arr.pb({xs[i+1].f-xs[i].f,i,i+1});
    }
    sort(all(arr));
    for(auto &z : arr){
        if(mg(z[1],z[2]))
            ans+=z[0];
    }
    return ans;
}

Compilation message

railroad.cpp: In function 'll plan_roller_coaster(std::vector<int>, std::vector<int>)':
railroad.cpp:51:14: warning: unused variable 'jt' [-Wunused-variable]
   51 |     int bl=0,jt=0;
      |              ^~
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB n = 2
2 Correct 0 ms 212 KB n = 2
3 Correct 0 ms 212 KB n = 2
4 Correct 0 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 1 ms 212 KB n = 8
12 Correct 1 ms 316 KB n = 8
13 Correct 1 ms 212 KB n = 8
14 Correct 1 ms 312 KB n = 8
15 Correct 1 ms 212 KB n = 8
16 Correct 1 ms 312 KB n = 8
17 Correct 0 ms 212 KB n = 8
18 Correct 1 ms 308 KB n = 8
19 Correct 1 ms 312 KB n = 3
20 Correct 0 ms 316 KB n = 7
21 Correct 0 ms 212 KB n = 8
22 Correct 0 ms 308 KB n = 8
23 Correct 0 ms 212 KB n = 8
24 Correct 1 ms 212 KB n = 8
25 Correct 0 ms 212 KB n = 8
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB n = 2
2 Correct 0 ms 212 KB n = 2
3 Correct 0 ms 212 KB n = 2
4 Correct 0 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 1 ms 212 KB n = 8
12 Correct 1 ms 316 KB n = 8
13 Correct 1 ms 212 KB n = 8
14 Correct 1 ms 312 KB n = 8
15 Correct 1 ms 212 KB n = 8
16 Correct 1 ms 312 KB n = 8
17 Correct 0 ms 212 KB n = 8
18 Correct 1 ms 308 KB n = 8
19 Correct 1 ms 312 KB n = 3
20 Correct 0 ms 316 KB n = 7
21 Correct 0 ms 212 KB n = 8
22 Correct 0 ms 308 KB n = 8
23 Correct 0 ms 212 KB n = 8
24 Correct 1 ms 212 KB n = 8
25 Correct 0 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 212 KB n = 8
29 Correct 1 ms 308 KB n = 16
30 Correct 1 ms 312 KB n = 16
31 Correct 1 ms 212 KB n = 16
32 Correct 1 ms 212 KB n = 16
33 Correct 0 ms 312 KB n = 16
34 Correct 1 ms 212 KB n = 16
35 Correct 0 ms 212 KB n = 16
36 Correct 1 ms 212 KB n = 15
37 Correct 0 ms 212 KB n = 8
38 Correct 0 ms 212 KB n = 16
39 Correct 1 ms 212 KB n = 16
40 Correct 0 ms 212 KB n = 9
41 Correct 0 ms 212 KB n = 16
42 Correct 1 ms 308 KB n = 16
43 Correct 1 ms 308 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 340 KB n = 16
48 Correct 1 ms 312 KB n = 16
# Verdict Execution time Memory Grader output
1 Correct 819 ms 56620 KB n = 199999
2 Correct 878 ms 58516 KB n = 199991
3 Correct 803 ms 57728 KB n = 199993
4 Correct 544 ms 45336 KB n = 152076
5 Correct 322 ms 27840 KB n = 93249
6 Correct 658 ms 49240 KB n = 199910
7 Correct 684 ms 56408 KB n = 199999
8 Correct 621 ms 49528 KB n = 199997
9 Correct 738 ms 50004 KB n = 171294
10 Correct 535 ms 42908 KB n = 140872
11 Correct 656 ms 47856 KB n = 199886
12 Correct 674 ms 57552 KB n = 199996
13 Correct 621 ms 51876 KB n = 200000
14 Correct 645 ms 57188 KB n = 199998
15 Correct 639 ms 56488 KB n = 200000
16 Correct 626 ms 58116 KB n = 199998
17 Correct 787 ms 61556 KB n = 200000
18 Correct 730 ms 56512 KB n = 190000
19 Correct 617 ms 55404 KB n = 177777
20 Correct 266 ms 29744 KB n = 100000
21 Correct 673 ms 58932 KB n = 200000
22 Correct 741 ms 58804 KB n = 200000
23 Correct 801 ms 58724 KB n = 200000
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB n = 2
2 Correct 0 ms 212 KB n = 2
3 Correct 0 ms 212 KB n = 2
4 Correct 0 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 1 ms 212 KB n = 8
12 Correct 1 ms 316 KB n = 8
13 Correct 1 ms 212 KB n = 8
14 Correct 1 ms 312 KB n = 8
15 Correct 1 ms 212 KB n = 8
16 Correct 1 ms 312 KB n = 8
17 Correct 0 ms 212 KB n = 8
18 Correct 1 ms 308 KB n = 8
19 Correct 1 ms 312 KB n = 3
20 Correct 0 ms 316 KB n = 7
21 Correct 0 ms 212 KB n = 8
22 Correct 0 ms 308 KB n = 8
23 Correct 0 ms 212 KB n = 8
24 Correct 1 ms 212 KB n = 8
25 Correct 0 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 212 KB n = 8
29 Correct 1 ms 308 KB n = 16
30 Correct 1 ms 312 KB n = 16
31 Correct 1 ms 212 KB n = 16
32 Correct 1 ms 212 KB n = 16
33 Correct 0 ms 312 KB n = 16
34 Correct 1 ms 212 KB n = 16
35 Correct 0 ms 212 KB n = 16
36 Correct 1 ms 212 KB n = 15
37 Correct 0 ms 212 KB n = 8
38 Correct 0 ms 212 KB n = 16
39 Correct 1 ms 212 KB n = 16
40 Correct 0 ms 212 KB n = 9
41 Correct 0 ms 212 KB n = 16
42 Correct 1 ms 308 KB n = 16
43 Correct 1 ms 308 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 340 KB n = 16
48 Correct 1 ms 312 KB n = 16
49 Correct 819 ms 56620 KB n = 199999
50 Correct 878 ms 58516 KB n = 199991
51 Correct 803 ms 57728 KB n = 199993
52 Correct 544 ms 45336 KB n = 152076
53 Correct 322 ms 27840 KB n = 93249
54 Correct 658 ms 49240 KB n = 199910
55 Correct 684 ms 56408 KB n = 199999
56 Correct 621 ms 49528 KB n = 199997
57 Correct 738 ms 50004 KB n = 171294
58 Correct 535 ms 42908 KB n = 140872
59 Correct 656 ms 47856 KB n = 199886
60 Correct 674 ms 57552 KB n = 199996
61 Correct 621 ms 51876 KB n = 200000
62 Correct 645 ms 57188 KB n = 199998
63 Correct 639 ms 56488 KB n = 200000
64 Correct 626 ms 58116 KB n = 199998
65 Correct 787 ms 61556 KB n = 200000
66 Correct 730 ms 56512 KB n = 190000
67 Correct 617 ms 55404 KB n = 177777
68 Correct 266 ms 29744 KB n = 100000
69 Correct 673 ms 58932 KB n = 200000
70 Correct 741 ms 58804 KB n = 200000
71 Correct 801 ms 58724 KB n = 200000
72 Correct 846 ms 61148 KB n = 200000
73 Correct 869 ms 61524 KB n = 200000
74 Correct 779 ms 63328 KB n = 200000
75 Correct 736 ms 61444 KB n = 200000
76 Correct 752 ms 60812 KB n = 200000
77 Correct 386 ms 35028 KB n = 200000
78 Correct 367 ms 33012 KB n = 200000
79 Correct 692 ms 56884 KB n = 184307
80 Correct 231 ms 25396 KB n = 76040
81 Correct 624 ms 50520 KB n = 199981
82 Correct 659 ms 57580 KB n = 199994
83 Correct 563 ms 52016 KB n = 199996
84 Correct 602 ms 57032 KB n = 199998
85 Correct 605 ms 56412 KB n = 200000
86 Correct 613 ms 58252 KB n = 199998
87 Correct 718 ms 61528 KB n = 200000
88 Correct 736 ms 59272 KB n = 200000
89 Correct 723 ms 61236 KB n = 200000
90 Correct 673 ms 58976 KB n = 200000
91 Correct 713 ms 58800 KB n = 200000
92 Correct 801 ms 58796 KB n = 200000