Submission #1137187

#TimeUsernameProblemLanguageResultExecution timeMemory
1137187owoovoRoller Coaster Railroad (IOI16_railroad)C++20
0 / 100
181 ms18120 KiB
#include "railroad.h"
#include<bits/stdc++.h>
#define ll long long 
#define F first
#define S second 
using namespace std;
const int maxn=1e9+10;
int dsu[4000010];
vector<int> s,t;
int f(int a){
    if(dsu[a]==a)return a;
    dsu[a]=f(dsu[a]);
    return dsu[a];
}
bool onion(int a,int b){
    a=f(a);
    b=f(b);
    if(a==b)return 0;
    dsu[a]=b;
    return 1;
}
ll plan_roller_coaster(vector<int> S, vector<int> T) {
    int n = (int) S.size();
    ll ans=0;
    s=S,t=T;
    vector<int> use;
    s.push_back(maxn);
    t.push_back(0);
    for(int i=0;i<=n;i++){
        use.push_back(t[i]);
        use.push_back(s[i]);
    }
    sort(use.begin(),use.end());
    use.erase(unique(use.begin(),use.end()),use.end());
    int sz=use.size();
    for(int i=0;i<sz;i++)dsu[i]=i;
    for(int i=0;i<=n;i++){
        t[i]=lower_bound(use.begin(),use.end(),t[i])-use.begin();
        s[i]=lower_bound(use.begin(),use.end(),s[i])-use.begin();
        onion(s[i],t[i]);
    }
    vector<int> ns=s,nt=t;
    sort(ns.begin(),ns.end());
    sort(nt.begin(),nt.end());
    for(int i=0;i<=n;i++){
        onion(ns[i],nt[i]);
        ans+=max(0,use[nt[i]]-use[ns[i]]);
    }
    vector<pair<ll,pair<int,int>>> edge;
    for(int i=0;i<sz-1;i++){
        edge.push_back({use[i+1]-use[i],{i,i+1}});
    }
    sort(edge.begin(),edge.end());
    for(auto x:edge){
        if(onion(x.S.F,x.S.S)){
            ans+=x.F;
        }
    }
    return ans;
}

Compilation message (stderr)

railroad.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
railroad_c.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...