Submission #789919

# Submission time Handle Problem Language Result Execution time Memory
789919 2023-07-22T07:19:19 Z alvingogo Roller Coaster Railroad (IOI16_railroad) C++14
100 / 100
112 ms 13392 KB
#include "railroad.h"
#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
#define fs first
#define sc second
#define p_q priority_queue
using namespace std;

struct DSU{
    vector<int> bo;
    void init(int x){
        bo.resize(x);
        iota(bo.begin(),bo.end(),0);
    }
    int find(int x){
        return bo[x]==x?x:bo[x]=find(bo[x]);
    }
    int merge(int x,int y){
        x=find(x);
        y=find(y);
        if(x==y){
            return 0;
        }
        bo[x]=y;
        return 1;
    }
}dsu;
const int inf=1e9;
long long plan_roller_coaster(vector<int> s, vector<int> t) {
    int n=s.size();
    vector<pair<int,int> > a(n+1),b(n+1);
    for(int i=0;i<n;i++){
        a[i]={s[i],i};
        b[i]={t[i],i};
    }
    a[n]={inf,n};
    b[n]={1,n};
    n++;
    dsu.init(n);
    sort(a.begin(),a.end());
    sort(b.begin(),b.end());
    long long sum=0,ax=0;
    for(int i=0;i<n;i++){
        dsu.merge(a[i].sc,b[i].sc);
        sum+=abs(a[i].fs-b[i].fs);
        ax+=a[i].fs;
        ax-=b[i].fs;
    }
    p_q<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > > pq;
    for(int i=0;i+1<n;i++){
        pq.push({2*max(0,min(a[i+1].fs,b[i+1].fs)-max(a[i].fs,b[i].fs)),i});
    }
    while(pq.size()){
        auto h=pq.top();
        pq.pop();
        sum+=dsu.merge(a[h.sc].sc,a[h.sc+1].sc)*h.fs;
    }
    return (sum-ax)/2;
}
# 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 0 ms 212 KB n = 3
8 Correct 0 ms 212 KB n = 3
9 Correct 0 ms 212 KB n = 3
10 Correct 0 ms 212 KB n = 8
11 Correct 0 ms 212 KB n = 8
12 Correct 0 ms 212 KB n = 8
13 Correct 0 ms 212 KB n = 8
14 Correct 0 ms 212 KB n = 8
15 Correct 0 ms 212 KB n = 8
16 Correct 0 ms 212 KB n = 8
17 Correct 0 ms 212 KB n = 8
18 Correct 0 ms 212 KB n = 8
19 Correct 0 ms 212 KB n = 3
20 Correct 0 ms 212 KB n = 7
21 Correct 0 ms 212 KB n = 8
22 Correct 0 ms 212 KB n = 8
23 Correct 0 ms 212 KB n = 8
24 Correct 0 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 0 ms 212 KB n = 3
8 Correct 0 ms 212 KB n = 3
9 Correct 0 ms 212 KB n = 3
10 Correct 0 ms 212 KB n = 8
11 Correct 0 ms 212 KB n = 8
12 Correct 0 ms 212 KB n = 8
13 Correct 0 ms 212 KB n = 8
14 Correct 0 ms 212 KB n = 8
15 Correct 0 ms 212 KB n = 8
16 Correct 0 ms 212 KB n = 8
17 Correct 0 ms 212 KB n = 8
18 Correct 0 ms 212 KB n = 8
19 Correct 0 ms 212 KB n = 3
20 Correct 0 ms 212 KB n = 7
21 Correct 0 ms 212 KB n = 8
22 Correct 0 ms 212 KB n = 8
23 Correct 0 ms 212 KB n = 8
24 Correct 0 ms 212 KB n = 8
25 Correct 0 ms 212 KB n = 8
26 Correct 0 ms 212 KB n = 8
27 Correct 0 ms 212 KB n = 8
28 Correct 1 ms 212 KB n = 8
29 Correct 1 ms 212 KB n = 16
30 Correct 0 ms 232 KB n = 16
31 Correct 0 ms 212 KB n = 16
32 Correct 1 ms 212 KB n = 16
33 Correct 0 ms 212 KB n = 16
34 Correct 0 ms 212 KB n = 16
35 Correct 1 ms 212 KB n = 16
36 Correct 0 ms 212 KB n = 15
37 Correct 0 ms 212 KB n = 8
38 Correct 0 ms 212 KB n = 16
39 Correct 0 ms 212 KB n = 16
40 Correct 1 ms 212 KB n = 9
41 Correct 0 ms 212 KB n = 16
42 Correct 0 ms 212 KB n = 16
43 Correct 0 ms 212 KB n = 16
44 Correct 0 ms 212 KB n = 9
45 Correct 0 ms 212 KB n = 15
46 Correct 0 ms 212 KB n = 16
47 Correct 0 ms 212 KB n = 16
48 Correct 0 ms 212 KB n = 16
# Verdict Execution time Memory Grader output
1 Correct 92 ms 9644 KB n = 199999
2 Correct 86 ms 9516 KB n = 199991
3 Correct 87 ms 9536 KB n = 199993
4 Correct 64 ms 7760 KB n = 152076
5 Correct 39 ms 4748 KB n = 93249
6 Correct 82 ms 9540 KB n = 199910
7 Correct 86 ms 9532 KB n = 199999
8 Correct 82 ms 9512 KB n = 199997
9 Correct 74 ms 8428 KB n = 171294
10 Correct 62 ms 7392 KB n = 140872
11 Correct 82 ms 9512 KB n = 199886
12 Correct 85 ms 9412 KB n = 199996
13 Correct 88 ms 9528 KB n = 200000
14 Correct 95 ms 9408 KB n = 199998
15 Correct 95 ms 9532 KB n = 200000
16 Correct 98 ms 9416 KB n = 199998
17 Correct 79 ms 9536 KB n = 200000
18 Correct 79 ms 9076 KB n = 190000
19 Correct 70 ms 8732 KB n = 177777
20 Correct 39 ms 4964 KB n = 100000
21 Correct 84 ms 9516 KB n = 200000
22 Correct 107 ms 9512 KB n = 200000
23 Correct 100 ms 9524 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 0 ms 212 KB n = 3
8 Correct 0 ms 212 KB n = 3
9 Correct 0 ms 212 KB n = 3
10 Correct 0 ms 212 KB n = 8
11 Correct 0 ms 212 KB n = 8
12 Correct 0 ms 212 KB n = 8
13 Correct 0 ms 212 KB n = 8
14 Correct 0 ms 212 KB n = 8
15 Correct 0 ms 212 KB n = 8
16 Correct 0 ms 212 KB n = 8
17 Correct 0 ms 212 KB n = 8
18 Correct 0 ms 212 KB n = 8
19 Correct 0 ms 212 KB n = 3
20 Correct 0 ms 212 KB n = 7
21 Correct 0 ms 212 KB n = 8
22 Correct 0 ms 212 KB n = 8
23 Correct 0 ms 212 KB n = 8
24 Correct 0 ms 212 KB n = 8
25 Correct 0 ms 212 KB n = 8
26 Correct 0 ms 212 KB n = 8
27 Correct 0 ms 212 KB n = 8
28 Correct 1 ms 212 KB n = 8
29 Correct 1 ms 212 KB n = 16
30 Correct 0 ms 232 KB n = 16
31 Correct 0 ms 212 KB n = 16
32 Correct 1 ms 212 KB n = 16
33 Correct 0 ms 212 KB n = 16
34 Correct 0 ms 212 KB n = 16
35 Correct 1 ms 212 KB n = 16
36 Correct 0 ms 212 KB n = 15
37 Correct 0 ms 212 KB n = 8
38 Correct 0 ms 212 KB n = 16
39 Correct 0 ms 212 KB n = 16
40 Correct 1 ms 212 KB n = 9
41 Correct 0 ms 212 KB n = 16
42 Correct 0 ms 212 KB n = 16
43 Correct 0 ms 212 KB n = 16
44 Correct 0 ms 212 KB n = 9
45 Correct 0 ms 212 KB n = 15
46 Correct 0 ms 212 KB n = 16
47 Correct 0 ms 212 KB n = 16
48 Correct 0 ms 212 KB n = 16
49 Correct 92 ms 9644 KB n = 199999
50 Correct 86 ms 9516 KB n = 199991
51 Correct 87 ms 9536 KB n = 199993
52 Correct 64 ms 7760 KB n = 152076
53 Correct 39 ms 4748 KB n = 93249
54 Correct 82 ms 9540 KB n = 199910
55 Correct 86 ms 9532 KB n = 199999
56 Correct 82 ms 9512 KB n = 199997
57 Correct 74 ms 8428 KB n = 171294
58 Correct 62 ms 7392 KB n = 140872
59 Correct 82 ms 9512 KB n = 199886
60 Correct 85 ms 9412 KB n = 199996
61 Correct 88 ms 9528 KB n = 200000
62 Correct 95 ms 9408 KB n = 199998
63 Correct 95 ms 9532 KB n = 200000
64 Correct 98 ms 9416 KB n = 199998
65 Correct 79 ms 9536 KB n = 200000
66 Correct 79 ms 9076 KB n = 190000
67 Correct 70 ms 8732 KB n = 177777
68 Correct 39 ms 4964 KB n = 100000
69 Correct 84 ms 9516 KB n = 200000
70 Correct 107 ms 9512 KB n = 200000
71 Correct 100 ms 9524 KB n = 200000
72 Correct 90 ms 9512 KB n = 200000
73 Correct 84 ms 9532 KB n = 200000
74 Correct 88 ms 13348 KB n = 200000
75 Correct 81 ms 13352 KB n = 200000
76 Correct 81 ms 13376 KB n = 200000
77 Correct 80 ms 13376 KB n = 200000
78 Correct 96 ms 13376 KB n = 200000
79 Correct 78 ms 12324 KB n = 184307
80 Correct 31 ms 5608 KB n = 76040
81 Correct 80 ms 12224 KB n = 199981
82 Correct 85 ms 12732 KB n = 199994
83 Correct 84 ms 12328 KB n = 199996
84 Correct 99 ms 12576 KB n = 199998
85 Correct 112 ms 12480 KB n = 200000
86 Correct 99 ms 12904 KB n = 199998
87 Correct 81 ms 13388 KB n = 200000
88 Correct 83 ms 13392 KB n = 200000
89 Correct 81 ms 13348 KB n = 200000
90 Correct 83 ms 13372 KB n = 200000
91 Correct 106 ms 13372 KB n = 200000
92 Correct 99 ms 13360 KB n = 200000