이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "wiring.h"
#include <bits/stdc++.h>
#define MAX 100000000
using namespace std;
typedef pair<int,int> ii;
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 ans=0,ma=-1;
bool vis[10000];
int wi[100000];
memset(wi,-1,sizeof wi);
memset(vis,false,sizeof vis);
for(int i=0;i<r.size();i++){
wi[r[i]]=1;
ma=max(ma,r[i]);
}
for(int i=0;i<b.size();i++){
wi[b[i]]=2;
ma=max(ma,b[i]);
}
int l,r;
vector<ii>wire;
for(int i=0;i<=ma;i++){
if(wi[i]!=-1){
// cout<<i<<endl;
wire.push_back(ii(wi[i],i));
}
}
wire.push_back(ii(wi[ma],ma));
//cout<<wire[wire.size()-1].second<<endl;
int left,right;
ans=0;
left=right=0;
for(int i=0;i<wire.size();i++){
//cout<<wire[i].first<<" "<<wire[i].second<<" "<<ans<<endl;
if(wire[i].first!=wire[i+1].first){
continue;
}
if(vis[wire[i].second]==true){
continue;
}
int idr,idl;
idr=idl=-1;
int tc=wire[i].first;
for(int j=i+1;j<wire.size();j++){
right++;
if(tc!=wire[j].first){
idr=j;
break;
}
}
for(int j=i-1;j>=0;j--){
left++;
if(tc!=wire[j].first){
idl=j;
break;
}
}
left=right =-1;
left=abs(wire[i].second-wire[idl].second);
right=abs(wire[i].second-wire[idr].second);
if(left>right and idr!=-1){
ans+=right;
vis[wire[idr].second]=1;
vis[wire[i].second]=1;
}
else{
if(idl!=-1){
ans+=left;
vis[wire[idl].second]=1;
vis[wire[i].second]=1;
}
else{
ans+=right;
vis[wire[idr].second]=1;
vis[wire[i].second]=1;
}
}
// printf("wire[i].first: %d wire[i].second: %d ans: %d left: %d right: %d\n",wire[i].first,wire[i].second,ans,left,right);
}
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:8:12: warning: right operand of comma operator has no effect [-Wunused-value]
le=0,ri;
^
wiring.cpp:15:14: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if(le==r.size()){
~~^~~~~~~~~~
wiring.cpp:31:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if(le==r.size()){
~~^~~~~~~~~~
wiring.cpp:39:26: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if(le==r.size()){
~~^~~~~~~~~~
wiring.cpp:60:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int i=0;i<r.size();i++){
~^~~~~~~~~
wiring.cpp:64:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int i=0;i<b.size();i++){
~^~~~~~~~~
wiring.cpp:81:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int i=0;i<wire.size();i++){
~^~~~~~~~~~~~
wiring.cpp:92:28: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int j=i+1;j<wire.size();j++){
~^~~~~~~~~~~~
wiring.cpp:68:13: warning: unused variable 'l' [-Wunused-variable]
int l,r;
^
wiring.cpp:68:15: warning: unused variable 'r' [-Wunused-variable]
int l,r;
^
# | 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... |