Submission #1156837

#TimeUsernameProblemLanguageResultExecution timeMemory
1156837Leonardo_PaesWiring (IOI17_wiring)C++20
13 / 100
22 ms4028 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...