Submission #962129

# Submission time Handle Problem Language Result Execution time Memory
962129 2024-04-13T07:19:11 Z Ahmed57 Roller Coaster Railroad (IOI16_railroad) C++17
100 / 100
944 ms 79256 KB
#include<bits/stdc++.h>
using namespace std;
#include "railroad.h"
#define int long long
int pr[400001];
int find(int x){
    if(x==pr[x])return x;
    return pr[x] = find(pr[x]);
}
bool mergegroup(int a,int b){
    a = find(a); b = find(b);
    if(a==b)return 0;
    pr[a] = b;
    return 1;
}
long long plan_roller_coaster(vector<int32_t> s, vector<int32_t> t){
    set<int> ss;
    for(auto i:s)ss.insert(i);
    for(auto i:t)ss.insert(i);
    map<int,int> sav;
    int rev[s.size()+t.size()+1];
    int cnt = 0;
    for(auto i:ss){
        sav[i] = ++cnt;
        rev[cnt] = i;
    }
    int in[cnt+1] = {0};
    int out[cnt+1] = {0};
    for(int i = 1;i<=cnt;i++)pr[i] = i;
    for(int i = 0;i<s.size();i++){
        in[sav[s[i]]]++;
        out[sav[t[i]]]++;
        mergegroup(sav[s[i]],sav[t[i]]);
    }
    in[cnt]++;
    out[1]++;
    mergegroup(1,cnt);
    long long ans = 0;
    vector<array<int,3>> ed;
    for(int i = cnt;i>1;i--){
        if(out[i]>in[i]){
            ans+=(out[i]-in[i])*(rev[i]-rev[i-1]);
            out[i-1]+=(out[i]-in[i]);
            mergegroup(i,i-1);
        }else if(in[i]>out[i]){
            in[i-1]+=(in[i]-out[i]);
            mergegroup(i,i-1);
        }
        ed.push_back({rev[i]-rev[i-1],i,i-1});
    }
    sort(ed.begin(),ed.end());
    for(auto i:ed){
        if(mergegroup(i[1],i[2]))ans+=i[0];
    }
    return ans;
}

Compilation message

railroad.cpp: In function 'long long int plan_roller_coaster(std::vector<int>, std::vector<int>)':
railroad.cpp:30:20: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   30 |     for(int i = 0;i<s.size();i++){
      |                   ~^~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB n = 2
2 Correct 0 ms 348 KB n = 2
3 Correct 0 ms 348 KB n = 2
4 Correct 0 ms 348 KB n = 2
5 Correct 0 ms 344 KB n = 2
6 Correct 0 ms 348 KB n = 2
7 Correct 0 ms 348 KB n = 3
8 Correct 0 ms 348 KB n = 3
9 Correct 0 ms 348 KB n = 3
10 Correct 0 ms 348 KB n = 8
11 Correct 0 ms 344 KB n = 8
12 Correct 0 ms 348 KB n = 8
13 Correct 0 ms 348 KB n = 8
14 Correct 0 ms 348 KB n = 8
15 Correct 0 ms 348 KB n = 8
16 Correct 0 ms 348 KB n = 8
17 Correct 0 ms 348 KB n = 8
18 Correct 0 ms 348 KB n = 8
19 Correct 1 ms 348 KB n = 3
20 Correct 1 ms 344 KB n = 7
21 Correct 0 ms 348 KB n = 8
22 Correct 0 ms 348 KB n = 8
23 Correct 1 ms 348 KB n = 8
24 Correct 0 ms 348 KB n = 8
25 Correct 0 ms 348 KB n = 8
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB n = 2
2 Correct 0 ms 348 KB n = 2
3 Correct 0 ms 348 KB n = 2
4 Correct 0 ms 348 KB n = 2
5 Correct 0 ms 344 KB n = 2
6 Correct 0 ms 348 KB n = 2
7 Correct 0 ms 348 KB n = 3
8 Correct 0 ms 348 KB n = 3
9 Correct 0 ms 348 KB n = 3
10 Correct 0 ms 348 KB n = 8
11 Correct 0 ms 344 KB n = 8
12 Correct 0 ms 348 KB n = 8
13 Correct 0 ms 348 KB n = 8
14 Correct 0 ms 348 KB n = 8
15 Correct 0 ms 348 KB n = 8
16 Correct 0 ms 348 KB n = 8
17 Correct 0 ms 348 KB n = 8
18 Correct 0 ms 348 KB n = 8
19 Correct 1 ms 348 KB n = 3
20 Correct 1 ms 344 KB n = 7
21 Correct 0 ms 348 KB n = 8
22 Correct 0 ms 348 KB n = 8
23 Correct 1 ms 348 KB n = 8
24 Correct 0 ms 348 KB n = 8
25 Correct 0 ms 348 KB n = 8
26 Correct 0 ms 344 KB n = 8
27 Correct 0 ms 348 KB n = 8
28 Correct 0 ms 348 KB n = 8
29 Correct 0 ms 348 KB n = 16
30 Correct 1 ms 344 KB n = 16
31 Correct 0 ms 348 KB n = 16
32 Correct 0 ms 348 KB n = 16
33 Correct 0 ms 344 KB n = 16
34 Correct 0 ms 348 KB n = 16
35 Correct 1 ms 348 KB n = 16
36 Correct 1 ms 348 KB n = 15
37 Correct 0 ms 348 KB n = 8
38 Correct 1 ms 348 KB n = 16
39 Correct 0 ms 348 KB n = 16
40 Correct 0 ms 348 KB n = 9
41 Correct 0 ms 348 KB n = 16
42 Correct 1 ms 348 KB n = 16
43 Correct 1 ms 348 KB n = 16
44 Correct 0 ms 348 KB n = 9
45 Correct 0 ms 348 KB n = 15
46 Correct 0 ms 348 KB n = 16
47 Correct 0 ms 348 KB n = 16
48 Correct 0 ms 348 KB n = 16
# Verdict Execution time Memory Grader output
1 Correct 831 ms 73072 KB n = 199999
2 Correct 806 ms 72348 KB n = 199991
3 Correct 944 ms 73148 KB n = 199993
4 Correct 536 ms 59024 KB n = 152076
5 Correct 266 ms 35440 KB n = 93249
6 Correct 598 ms 63392 KB n = 199910
7 Correct 655 ms 71616 KB n = 199999
8 Correct 615 ms 64316 KB n = 199997
9 Correct 607 ms 63936 KB n = 171294
10 Correct 470 ms 55032 KB n = 140872
11 Correct 588 ms 64004 KB n = 199886
12 Correct 672 ms 72516 KB n = 199996
13 Correct 569 ms 66548 KB n = 200000
14 Correct 627 ms 72648 KB n = 199998
15 Correct 616 ms 71868 KB n = 200000
16 Correct 628 ms 72144 KB n = 199998
17 Correct 663 ms 75176 KB n = 200000
18 Correct 671 ms 70860 KB n = 190000
19 Correct 558 ms 69564 KB n = 177777
20 Correct 257 ms 37112 KB n = 100000
21 Correct 697 ms 74332 KB n = 200000
22 Correct 677 ms 72924 KB n = 200000
23 Correct 701 ms 73812 KB n = 200000
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB n = 2
2 Correct 0 ms 348 KB n = 2
3 Correct 0 ms 348 KB n = 2
4 Correct 0 ms 348 KB n = 2
5 Correct 0 ms 344 KB n = 2
6 Correct 0 ms 348 KB n = 2
7 Correct 0 ms 348 KB n = 3
8 Correct 0 ms 348 KB n = 3
9 Correct 0 ms 348 KB n = 3
10 Correct 0 ms 348 KB n = 8
11 Correct 0 ms 344 KB n = 8
12 Correct 0 ms 348 KB n = 8
13 Correct 0 ms 348 KB n = 8
14 Correct 0 ms 348 KB n = 8
15 Correct 0 ms 348 KB n = 8
16 Correct 0 ms 348 KB n = 8
17 Correct 0 ms 348 KB n = 8
18 Correct 0 ms 348 KB n = 8
19 Correct 1 ms 348 KB n = 3
20 Correct 1 ms 344 KB n = 7
21 Correct 0 ms 348 KB n = 8
22 Correct 0 ms 348 KB n = 8
23 Correct 1 ms 348 KB n = 8
24 Correct 0 ms 348 KB n = 8
25 Correct 0 ms 348 KB n = 8
26 Correct 0 ms 344 KB n = 8
27 Correct 0 ms 348 KB n = 8
28 Correct 0 ms 348 KB n = 8
29 Correct 0 ms 348 KB n = 16
30 Correct 1 ms 344 KB n = 16
31 Correct 0 ms 348 KB n = 16
32 Correct 0 ms 348 KB n = 16
33 Correct 0 ms 344 KB n = 16
34 Correct 0 ms 348 KB n = 16
35 Correct 1 ms 348 KB n = 16
36 Correct 1 ms 348 KB n = 15
37 Correct 0 ms 348 KB n = 8
38 Correct 1 ms 348 KB n = 16
39 Correct 0 ms 348 KB n = 16
40 Correct 0 ms 348 KB n = 9
41 Correct 0 ms 348 KB n = 16
42 Correct 1 ms 348 KB n = 16
43 Correct 1 ms 348 KB n = 16
44 Correct 0 ms 348 KB n = 9
45 Correct 0 ms 348 KB n = 15
46 Correct 0 ms 348 KB n = 16
47 Correct 0 ms 348 KB n = 16
48 Correct 0 ms 348 KB n = 16
49 Correct 831 ms 73072 KB n = 199999
50 Correct 806 ms 72348 KB n = 199991
51 Correct 944 ms 73148 KB n = 199993
52 Correct 536 ms 59024 KB n = 152076
53 Correct 266 ms 35440 KB n = 93249
54 Correct 598 ms 63392 KB n = 199910
55 Correct 655 ms 71616 KB n = 199999
56 Correct 615 ms 64316 KB n = 199997
57 Correct 607 ms 63936 KB n = 171294
58 Correct 470 ms 55032 KB n = 140872
59 Correct 588 ms 64004 KB n = 199886
60 Correct 672 ms 72516 KB n = 199996
61 Correct 569 ms 66548 KB n = 200000
62 Correct 627 ms 72648 KB n = 199998
63 Correct 616 ms 71868 KB n = 200000
64 Correct 628 ms 72144 KB n = 199998
65 Correct 663 ms 75176 KB n = 200000
66 Correct 671 ms 70860 KB n = 190000
67 Correct 558 ms 69564 KB n = 177777
68 Correct 257 ms 37112 KB n = 100000
69 Correct 697 ms 74332 KB n = 200000
70 Correct 677 ms 72924 KB n = 200000
71 Correct 701 ms 73812 KB n = 200000
72 Correct 765 ms 74072 KB n = 200000
73 Correct 750 ms 72908 KB n = 200000
74 Correct 771 ms 72956 KB n = 200000
75 Correct 712 ms 78452 KB n = 200000
76 Correct 688 ms 76996 KB n = 200000
77 Correct 331 ms 46528 KB n = 200000
78 Correct 368 ms 44440 KB n = 200000
79 Correct 690 ms 72784 KB n = 184307
80 Correct 171 ms 32052 KB n = 76040
81 Correct 628 ms 67408 KB n = 199981
82 Correct 696 ms 76228 KB n = 199994
83 Correct 554 ms 69776 KB n = 199996
84 Correct 635 ms 75636 KB n = 199998
85 Correct 614 ms 74096 KB n = 200000
86 Correct 689 ms 77244 KB n = 199998
87 Correct 726 ms 79248 KB n = 200000
88 Correct 846 ms 76700 KB n = 200000
89 Correct 765 ms 79256 KB n = 200000
90 Correct 780 ms 76440 KB n = 200000
91 Correct 855 ms 76444 KB n = 200000
92 Correct 800 ms 77872 KB n = 200000