#include "wiring.h"
#include <bits/stdc++.h>
typedef long long ll;
#define ar array
using namespace std;
long long min_total_length(std::vector<int> r, std::vector<int> b) {
queue<int> fila[2];
int last[2] = {0, 0};
vector<ar<int,2>> v;
for(int x : r) v.push_back({x, 0});
for(int x : b) v.push_back({x, 1});
sort(v.begin(), v.end());
long long ans = 0;
for(auto [x, c] : v){
if(!fila[!c].empty()){
last[c] = x;
last[!c] = fila[!c].front();
fila[!c].pop();
ans += x - last[!c];
}
else fila[c].push(x);
}
while(!fila[0].empty()){
int x = fila[0].front();
fila[0].pop();
auto it = lower_bound(b.begin(), b.end(), x);
int aux = 0x3f3f3f3f;
if(it != b.end()) aux = min(aux, abs(x - *it));
if(it != b.begin()) aux = min(aux, abs(x - *prev(it)));
ans += aux;
}
while(!fila[1].empty()){
int x = fila[1].front();
fila[1].pop();
auto it = lower_bound(r.begin(), r.end(), x);
int aux = 0x3f3f3f3f;
if(it != r.end()) aux = min(aux, abs(x - *it));
if(it != r.begin()) aux = min(aux, abs(x - *prev(it)));
ans += aux;
}
return ans;
}
# | 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... |