이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "wiring.h"
#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int> ii;
int vis[200010];
long long min_total_length(std::vector<int> r, std::vector<int> b) {
vector<ii> rb;
vector<ii> ra,ba;
for(int i=0;i<r.size();i++){
rb.push_back(ii(r[i],1));
}
for(int i=0;i<b.size();i++){
rb.push_back(ii(b[i],2));
}
int pr,pb;
pr=pb=0;
sort(rb.begin(),rb.end());
for(int i=0;i<rb.size();i++){
if(r[pr]==rb[i].first){
ra.push_back(ii(r[pr],i));
pr++;
}
else{
ba.push_back(ii(b[pb],i));
pb++;
}
}
long long res=0;
memset(vis,0,sizeof vis);
for(int i=0;i<rb.size();i++){
if(vis[i]==1) continue;
if(rb[i].second==1){
vector<ii>::iterator it;
it=lower_bound(ba.begin(),ba.end(),ii(rb[i].first,0));
if(it==ba.end()) it--;
int x=it-ba.begin();
while(true){
if(vis[(*it).second]==0 or it==ba.end()){
break;
}
it++;
}
//cout<<rb[i].first<<" "<<(*it).first<<endl;
if(it!=ba.end()){
vis[i]=1;
vis[(*it).second]=1;
res+=abs((*it).first-rb[i].first);
}
else{
vis[i]=1;
res+=abs(rb[i].first-ba[x].first);
}
}
else{
vector<ii>::iterator it;
it=lower_bound(ra.begin(),ra.end(),ii(rb[i].first,0));
if(it==ra.end()) it--;
int x=it-ra.begin();
while(true){
if(vis[(*it).second]==0 or it==ra.end()) break;
it++;
}
if(it!=ra.end()){
vis[i]=1;
vis[(*it).second]=1;
res+=abs(rb[i].first-(*it).first);
}
else{
vis[i]=1;
res+=abs(rb[i].first-ra[x].first);
}
}
}
return res;
}
컴파일 시 표준 에러 (stderr) 메시지
wiring.cpp: In function 'long long int min_total_length(std::vector<int>, std::vector<int>)':
wiring.cpp:9:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
9 | for(int i=0;i<r.size();i++){
| ~^~~~~~~~~
wiring.cpp:12:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
12 | for(int i=0;i<b.size();i++){
| ~^~~~~~~~~
wiring.cpp:18:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
18 | for(int i=0;i<rb.size();i++){
| ~^~~~~~~~~~
wiring.cpp:30:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
30 | for(int i=0;i<rb.size();i++){
| ~^~~~~~~~~~
# | 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... |