이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "wiring.h"
#include <bits/stdc++.h>
#define MAX 100000000
using namespace std;
long long min_total_length(std::vector<int> r, std::vector<int> b) {
long long s=0,le,ri;
le=0,ri;
ri=b.size()-1;
if(r[r.size()-1]<b[0]){
while(true){
s+=abs(r[le]-b[ri]);
le++;
ri--;
if(le==r.size()){
if(ri==-1)
break;
else{
le--;
while(true){
s+=abs(r[le]-b[ri]);
ri--;
if(ri==-1){
break;
}
}
break;
}
}
if(ri==-1){
if(le==r.size()){
break;
}
else{
ri++;
while(true){
s+=abs(r[le]-b[ri]);
le++;
if(le==r.size()){
break;
}
}
break;
}
}
}
if(le!=ri){
for(int i=le;i<=ri;i++){
s+=abs(r[le-1]-b[i]);
}
}
return s;
}
else{
int wi[100010],ma=-1;
bool vis[100010];
memset(wi,-1,sizeof wi);
memset(vis,0,sizeof vis);
for(int i=0;i<r.size();i++){
ma=max(ma,r[i]);
wi[r[i]]=1;
}
for(int i=0;i<b.size();i++){
wi[b[i]]=2;
ma=max(ma,b[i]);
}
int ans=0,c=r.size()+b.size();
for(int i=0;i<ma;i++){
if(wi[i]==1){
int left=0,right=0,idl,idr;
for(int j=i;j<ma;j++){
left++;
if(wi[j]==2){
idl=j;
break;
}
}
for(int j=i;j>=0;j--){
right++;
if(wi[j]==1){
idr=j;
break;
}
}
if(vis[idl]==1 and vis[idr]==1){
if(left>right){
ans+=right;
}
else{
ans+=left;
}
}
else{
if(vis[idl]==1){
ans+=right;
vis[idr]=1;
}
else{
ans+=left;
vis[idl]=1;
}
}
}
}
return ans;
}
}
/*
int main() {
int n, m;
assert(2 == scanf("%d %d", &n, &m));
vector<int> r(n), b(m);
for(int i = 0; i < n; i++)
assert(1 == scanf("%d", &r[i]));
for(int i = 0; i < m; i++)
assert(1 == scanf("%d", &b[i]));
long long res = min_total_length(r, b);
printf("%lld\n", res);
return 0;
}*/
컴파일 시 표준 에러 (stderr) 메시지
wiring.cpp: In function 'long long int min_total_length(std::vector<int>, std::vector<int>)':
wiring.cpp:7:12: warning: right operand of comma operator has no effect [-Wunused-value]
le=0,ri;
^
wiring.cpp:14:14: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if(le==r.size()){
~~^~~~~~~~~~
wiring.cpp:30:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if(le==r.size()){
~~^~~~~~~~~~
wiring.cpp:38:26: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if(le==r.size()){
~~^~~~~~~~~~
wiring.cpp:58:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int i=0;i<r.size();i++){
~^~~~~~~~~
wiring.cpp:62:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int i=0;i<b.size();i++){
~^~~~~~~~~
wiring.cpp:66:19: warning: unused variable 'c' [-Wunused-variable]
int ans=0,c=r.size()+b.size();
^
wiring.cpp:84:27: warning: 'idl' may be used uninitialized in this function [-Wmaybe-uninitialized]
if(vis[idl]==1 and vis[idr]==1){
~~~~~~~^
# | 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... |