이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
#define f first
#define s second
typedef long long ll;
const ll inf = 1e18+10;
typedef pair<ll,ll> pii;
int main(){
ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
int k, n;
cin >> k >> n;
ll ans1 = 0, ans2 = 0;
vector<ll> a, b, c;
for(int i=1; i<=n; i++){
int s, t;
char p, q;
cin >> p >> s >> q >> t;
if(p == q) ans1 += abs(s - t);
else{
if(p == 'B') swap(s, t);
if(s > t) swap(s, t);
a.push_back(s);
b.push_back(t);
}
}
for(auto x : a) c.push_back(x);
for(auto x : b) c.push_back(x);
if(k == 1){
for(auto x : a) c.push_back(x);
for(auto x : b) c.push_back(x);
sort(c.begin(), c.end());
if(!c.empty()){
ll opt = c[(int)c.size()/2];
for(auto x : a) ans2 += abs(opt - x);
for(auto x : b) ans2 += abs(opt - x);
}
}
else if(!c.empty()){
ans2 = inf;
for(int i=0; i<c.size(); i++){
priority_queue<pii, vector<pii>, greater<pii>> fila;
ll g = 0, delta = 0;
for(int j=0; j<a.size(); j++){
if(a[j] <= c[i] and c[i] <= b[j]) g += b[j] - a[j];
else{
ll gap = min(abs(a[j] - c[i]), abs(b[j] - c[i]));
g += 2*gap+b[j]-a[j];
fila.push({a[j], +2});
fila.push({b[j], +2});
fila.push({a[j] - gap, -2});
fila.push({b[j] + gap, -2});
}
}
ll x = -inf;
ans2 = min(ans2, g);
while(!fila.empty()){
pii event = fila.top();
fila.pop();
g += delta*(event.f - x);
ans2 = min(ans2, g);
x = event.f;
delta += event.s;
}
}
}
cout << ans1 + ans2 + (int)a.size() << "\n";
return 0;
}
컴파일 시 표준 에러 (stderr) 메시지
bridge.cpp: In function 'int main()':
bridge.cpp:40:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int i=0; i<c.size(); i++){
~^~~~~~~~~
bridge.cpp:43:27: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int j=0; j<a.size(); j++){
~^~~~~~~~~
# | 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... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |