이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll inf = 1e18+10;
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);
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++){
for(int j=i+1; j<c.size(); j++){
ll tot = 0LL;
for(int k=0; k<a.size(); k++){
tot += min(abs(a[k] - c[i]) + abs(b[k] - c[i]),
abs(a[k] - c[j]) + abs(b[k] - c[j]));
}
ans2 = min(ans2, tot);
}
}
}
cout << ans1 + ans2 + (int)a.size() << "\n";
return 0;
}
컴파일 시 표준 에러 (stderr) 메시지
bridge.cpp: In function 'int main()':
bridge.cpp:36:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int i=0; i<c.size(); i++){
~^~~~~~~~~
bridge.cpp:37:29: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int j=i+1; j<c.size(); j++){
~^~~~~~~~~
bridge.cpp:39:31: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int k=0; k<a.size(); k++){
~^~~~~~~~~
# | 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... |