#include <bits/stdc++.h>
using namespace std;
#define int long long
#define arr array
#define vec vector
#define pii pair<int, int>
#define fir first
#define sec second
const int N = 2e5 + 5, INF = 2e9;
int n;
arr<int, N> s, t;
map<int, int> flw;
vec<pii> mrgd;
int flw_cmp() {
for (int i = 0; i <= n; i++) {
if (s[i] <= t[i])
flw[s[i]]++, flw[t[i]]--;
else
flw[t[i]]--, flw[s[i]]++;
}
int prv = 0;
for (auto it = flw.begin(); it != flw.end(); it++) {
it->sec += prv;
prv = it->sec;
}
int ans = 0;
for (auto it = flw.begin(); next(it, 1) != flw.end(); it++) {
if (it->sec == 0) continue;
if (it->sec > 0)
ans += it->sec * (next(it, 1)->fir - it->fir);
mrgd.push_back({it->fir, next(it, 1)->fir});
}
// for (pii x : flw)
// cerr << x.fir << ": " << x.sec << '\n';
return ans;
}
struct Dsj {
map<int, int> prnt;
void intl() {
for (pii x : flw) prnt[x.fir] = x.fir;
}
int pr(int u) {
return (prnt[u] == u) ? u : prnt[u] = pr(prnt[u]);
}
bool mrg(int u, int v) {
u = pr(u), v = pr(v);
if (u == v) return false;
prnt[v] = u;
return true;
}
} dsj;
vec<vec<int>> edg;
int mst_cmp() {
for (auto it = flw.begin(); next(it, 1) != flw.end(); it++)
edg.push_back({next(it, 1)->fir - it->fir, it->fir, next(it, 1)->fir});
sort(edg.begin(), edg.end());
dsj.intl();
for (int i = 0; i <= n; i++) dsj.mrg(s[i], t[i]);
for (pii x : mrgd) dsj.mrg(x.fir, x.sec);
int ans = 0;
for (vec<int> x : edg) {
int u = x[1], v = x[2];
if (!dsj.mrg(u, v)) continue;
// cerr << u << " " << v << '\n';
ans += x[0];
}
return ans;
}
int plan_roller_coaster(vec<signed> _s, vec<signed> _t) {
n = _s.size();
for (int i = 1; i <= n; i++) s[i] = _s[i - 1], t[i] = _t[i - 1];
s[0] = INF, t[0] = 1;
int ans = flw_cmp();
return -1;
// ans += mst_cmp();
// return ans;
}
컴파일 시 표준 에러 (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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |