Submission #881065

# Submission time Handle Problem Language Result Execution time Memory
881065 2023-11-30T13:35:33 Z HuyQuang_re_Zero Roller Coaster Railroad (IOI16_railroad) C++14
100 / 100
526 ms 64596 KB
#include <bits/stdc++.h>
#define ll long long
#define db long double
#define II pair <ll,ll>
#define III pair <ll,II>
#define IV pair <vector <int>,vector <int> >
#define IDB pair <db,int>
#define TII pair <treap*,treap*>
#define fst first
#define snd second
#define BIT(x,i) ((x>>i)&1)
#define pi acos(-1)
#define to_radian(x) (x*pi/180.0)
#define to_degree(x) (x*180.0/pi)
#define Log(x) (31-__builtin_clz((int)x))
#define LogLL(x) (63-__builtin_clzll((ll)x))
using namespace std;
#include "railroad.h"
const int oo=2e9;
ll Real[400005],r[400005],u,U[400005],D[400005];
int root(int u) { return u==r[u] ? u : r[u]=root(r[u]); }
struct edge { int u,v,w; } e[400005];
bool join(int u,int v)
{
    u=root(u); v=root(v);
    if(u==v) return 0;
    r[u]=v;
    return 1;
}
ll plan_roller_coaster(vector <int> s,vector <int> t)
{
    set <int> val;
    map <int,int> rr;
    val.insert(1);
    val.insert(oo);
    for(int x:s) val.insert(x);
    for(int x:t) val.insert(x);
    int n_val=0;
    for(int x:val) rr[x]=++n_val,Real[n_val]=x;



    int n=s.size(),i,up=0,down=0;
    ll res=0;
    for(u=1;u<=n_val;u++) r[u]=u;
    D[1]++; D[n_val]--;
    join(1,n_val);
    for(i=0;i<n;i++)
    {
        s[i]=rr[s[i]]; t[i]=rr[t[i]];
        if(s[i]<=t[i]) U[s[i]]++,U[t[i]]--;
        else D[t[i]]++,D[s[i]]--;
        join(s[i],t[i]);
    }
    for(i=1;i<n_val;i++)
    {
        up+=U[i]; down+=D[i];
        res+=max(0,up-down)*(Real[i+1]-Real[i]);
        if(up!=down) join(i,i+1);
        e[i]={ i,i+1,Real[i+1]-Real[i] };
    }
    sort(e+1,e+n_val,[&](edge a,edge b){ return a.w<b.w; });
    for(i=1;i<n_val;i++)
        if(join(e[i].u,e[i].v)) res+=e[i].w;
    return res;
}

/*
int main()
{
    freopen("railroad.inp","r",stdin);
    freopen("railroad.out","w",stdout);
    ios_base::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
    vector <int> s,t;
    int l,r;
    while(cin>>l>>r) s.push_back(l),t.push_back(r);
    cout<<plan_roller_coaster(s,t);
}
*/

Compilation message

railroad.cpp: In function 'long long int plan_roller_coaster(std::vector<int>, std::vector<int>)':
railroad.cpp:60:31: warning: narrowing conversion of '(Real[(i + 1)] - Real[i])' from 'long long int' to 'int' [-Wnarrowing]
   60 |         e[i]={ i,i+1,Real[i+1]-Real[i] };
      |                      ~~~~~~~~~^~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 1 ms 6492 KB n = 2
2 Correct 1 ms 6492 KB n = 2
3 Correct 1 ms 6492 KB n = 2
4 Correct 1 ms 6492 KB n = 2
5 Correct 1 ms 8540 KB n = 2
6 Correct 1 ms 8540 KB n = 2
7 Correct 1 ms 6492 KB n = 3
8 Correct 1 ms 8540 KB n = 3
9 Correct 1 ms 8536 KB n = 3
10 Correct 1 ms 6492 KB n = 8
11 Correct 1 ms 8540 KB n = 8
12 Correct 1 ms 8540 KB n = 8
13 Correct 1 ms 8540 KB n = 8
14 Correct 1 ms 6492 KB n = 8
15 Correct 1 ms 8536 KB n = 8
16 Correct 1 ms 8540 KB n = 8
17 Correct 1 ms 8540 KB n = 8
18 Correct 1 ms 8540 KB n = 8
19 Correct 1 ms 6492 KB n = 3
20 Correct 1 ms 8540 KB n = 7
21 Correct 1 ms 8540 KB n = 8
22 Correct 1 ms 8540 KB n = 8
23 Correct 1 ms 8540 KB n = 8
24 Correct 1 ms 8540 KB n = 8
25 Correct 1 ms 6492 KB n = 8
# Verdict Execution time Memory Grader output
1 Correct 1 ms 6492 KB n = 2
2 Correct 1 ms 6492 KB n = 2
3 Correct 1 ms 6492 KB n = 2
4 Correct 1 ms 6492 KB n = 2
5 Correct 1 ms 8540 KB n = 2
6 Correct 1 ms 8540 KB n = 2
7 Correct 1 ms 6492 KB n = 3
8 Correct 1 ms 8540 KB n = 3
9 Correct 1 ms 8536 KB n = 3
10 Correct 1 ms 6492 KB n = 8
11 Correct 1 ms 8540 KB n = 8
12 Correct 1 ms 8540 KB n = 8
13 Correct 1 ms 8540 KB n = 8
14 Correct 1 ms 6492 KB n = 8
15 Correct 1 ms 8536 KB n = 8
16 Correct 1 ms 8540 KB n = 8
17 Correct 1 ms 8540 KB n = 8
18 Correct 1 ms 8540 KB n = 8
19 Correct 1 ms 6492 KB n = 3
20 Correct 1 ms 8540 KB n = 7
21 Correct 1 ms 8540 KB n = 8
22 Correct 1 ms 8540 KB n = 8
23 Correct 1 ms 8540 KB n = 8
24 Correct 1 ms 8540 KB n = 8
25 Correct 1 ms 6492 KB n = 8
26 Correct 2 ms 8796 KB n = 8
27 Correct 1 ms 8540 KB n = 8
28 Correct 1 ms 8540 KB n = 8
29 Correct 1 ms 6492 KB n = 16
30 Correct 1 ms 8540 KB n = 16
31 Correct 1 ms 8536 KB n = 16
32 Correct 1 ms 8540 KB n = 16
33 Correct 1 ms 6492 KB n = 16
34 Correct 1 ms 8540 KB n = 16
35 Correct 1 ms 8540 KB n = 16
36 Correct 1 ms 8540 KB n = 15
37 Correct 1 ms 8540 KB n = 8
38 Correct 1 ms 8540 KB n = 16
39 Correct 1 ms 8540 KB n = 16
40 Correct 1 ms 8540 KB n = 9
41 Correct 1 ms 8540 KB n = 16
42 Correct 1 ms 8540 KB n = 16
43 Correct 1 ms 6492 KB n = 16
44 Correct 1 ms 8540 KB n = 9
45 Correct 2 ms 8536 KB n = 15
46 Correct 1 ms 8540 KB n = 16
47 Correct 1 ms 8540 KB n = 16
48 Correct 1 ms 8540 KB n = 16
# Verdict Execution time Memory Grader output
1 Correct 517 ms 56148 KB n = 199999
2 Correct 522 ms 61520 KB n = 199991
3 Correct 506 ms 61688 KB n = 199993
4 Correct 333 ms 50004 KB n = 152076
5 Correct 211 ms 35372 KB n = 93249
6 Correct 386 ms 53072 KB n = 199910
7 Correct 455 ms 60588 KB n = 199999
8 Correct 405 ms 53856 KB n = 199997
9 Correct 418 ms 54608 KB n = 171294
10 Correct 311 ms 47984 KB n = 140872
11 Correct 398 ms 53776 KB n = 199886
12 Correct 460 ms 61476 KB n = 199996
13 Correct 398 ms 55892 KB n = 200000
14 Correct 441 ms 61736 KB n = 199998
15 Correct 429 ms 60740 KB n = 200000
16 Correct 458 ms 62308 KB n = 199998
17 Correct 500 ms 64596 KB n = 200000
18 Correct 483 ms 59900 KB n = 190000
19 Correct 386 ms 57028 KB n = 177777
20 Correct 181 ms 39236 KB n = 100000
21 Correct 480 ms 62184 KB n = 200000
22 Correct 464 ms 62032 KB n = 200000
23 Correct 482 ms 62236 KB n = 200000
# Verdict Execution time Memory Grader output
1 Correct 1 ms 6492 KB n = 2
2 Correct 1 ms 6492 KB n = 2
3 Correct 1 ms 6492 KB n = 2
4 Correct 1 ms 6492 KB n = 2
5 Correct 1 ms 8540 KB n = 2
6 Correct 1 ms 8540 KB n = 2
7 Correct 1 ms 6492 KB n = 3
8 Correct 1 ms 8540 KB n = 3
9 Correct 1 ms 8536 KB n = 3
10 Correct 1 ms 6492 KB n = 8
11 Correct 1 ms 8540 KB n = 8
12 Correct 1 ms 8540 KB n = 8
13 Correct 1 ms 8540 KB n = 8
14 Correct 1 ms 6492 KB n = 8
15 Correct 1 ms 8536 KB n = 8
16 Correct 1 ms 8540 KB n = 8
17 Correct 1 ms 8540 KB n = 8
18 Correct 1 ms 8540 KB n = 8
19 Correct 1 ms 6492 KB n = 3
20 Correct 1 ms 8540 KB n = 7
21 Correct 1 ms 8540 KB n = 8
22 Correct 1 ms 8540 KB n = 8
23 Correct 1 ms 8540 KB n = 8
24 Correct 1 ms 8540 KB n = 8
25 Correct 1 ms 6492 KB n = 8
26 Correct 2 ms 8796 KB n = 8
27 Correct 1 ms 8540 KB n = 8
28 Correct 1 ms 8540 KB n = 8
29 Correct 1 ms 6492 KB n = 16
30 Correct 1 ms 8540 KB n = 16
31 Correct 1 ms 8536 KB n = 16
32 Correct 1 ms 8540 KB n = 16
33 Correct 1 ms 6492 KB n = 16
34 Correct 1 ms 8540 KB n = 16
35 Correct 1 ms 8540 KB n = 16
36 Correct 1 ms 8540 KB n = 15
37 Correct 1 ms 8540 KB n = 8
38 Correct 1 ms 8540 KB n = 16
39 Correct 1 ms 8540 KB n = 16
40 Correct 1 ms 8540 KB n = 9
41 Correct 1 ms 8540 KB n = 16
42 Correct 1 ms 8540 KB n = 16
43 Correct 1 ms 6492 KB n = 16
44 Correct 1 ms 8540 KB n = 9
45 Correct 2 ms 8536 KB n = 15
46 Correct 1 ms 8540 KB n = 16
47 Correct 1 ms 8540 KB n = 16
48 Correct 1 ms 8540 KB n = 16
49 Correct 517 ms 56148 KB n = 199999
50 Correct 522 ms 61520 KB n = 199991
51 Correct 506 ms 61688 KB n = 199993
52 Correct 333 ms 50004 KB n = 152076
53 Correct 211 ms 35372 KB n = 93249
54 Correct 386 ms 53072 KB n = 199910
55 Correct 455 ms 60588 KB n = 199999
56 Correct 405 ms 53856 KB n = 199997
57 Correct 418 ms 54608 KB n = 171294
58 Correct 311 ms 47984 KB n = 140872
59 Correct 398 ms 53776 KB n = 199886
60 Correct 460 ms 61476 KB n = 199996
61 Correct 398 ms 55892 KB n = 200000
62 Correct 441 ms 61736 KB n = 199998
63 Correct 429 ms 60740 KB n = 200000
64 Correct 458 ms 62308 KB n = 199998
65 Correct 500 ms 64596 KB n = 200000
66 Correct 483 ms 59900 KB n = 190000
67 Correct 386 ms 57028 KB n = 177777
68 Correct 181 ms 39236 KB n = 100000
69 Correct 480 ms 62184 KB n = 200000
70 Correct 464 ms 62032 KB n = 200000
71 Correct 482 ms 62236 KB n = 200000
72 Correct 518 ms 60208 KB n = 200000
73 Correct 526 ms 62048 KB n = 200000
74 Correct 517 ms 62032 KB n = 200000
75 Correct 441 ms 62336 KB n = 200000
76 Correct 434 ms 60108 KB n = 200000
77 Correct 250 ms 45140 KB n = 200000
78 Correct 264 ms 42636 KB n = 200000
79 Correct 447 ms 58452 KB n = 184307
80 Correct 134 ms 31876 KB n = 76040
81 Correct 399 ms 54332 KB n = 199981
82 Correct 471 ms 61268 KB n = 199994
83 Correct 404 ms 56036 KB n = 199996
84 Correct 474 ms 61820 KB n = 199998
85 Correct 432 ms 60632 KB n = 200000
86 Correct 459 ms 62288 KB n = 199998
87 Correct 474 ms 64464 KB n = 200000
88 Correct 513 ms 62976 KB n = 200000
89 Correct 463 ms 62516 KB n = 200000
90 Correct 484 ms 62232 KB n = 200000
91 Correct 466 ms 62088 KB n = 200000
92 Correct 499 ms 62240 KB n = 200000