Submission #788350

#TimeUsernameProblemLanguageResultExecution timeMemory
788350NeroZein전선 연결 (IOI17_wiring)C++17
13 / 100
21 ms3788 KiB
#include "wiring.h"
#include "bits/stdc++.h"
using namespace std; 

long long min_total_length(std::vector<int> r, std::vector<int> b) {
  if (r.size() > b.size()) {
    swap(r, b); 
  }
  int n = (int) r.size();
  int m = (int) b.size(); 
  auto dis = [&](int i, int j) {
    return abs(i - j); 
  };
  sort(r.begin(), r.end());
  sort(b.begin(), b.end()); 
  int p = 0; 
  long long ans = 0; 
  for (int i = 0; i < n; ++i) {
    bool f = false; 
    while (p < m && (i == n - 1 || dis(r[i], b[p]) < dis(r[i + 1], b[p])) && m - p - 1 >= n - i - 1) {
      ans += dis(r[i], b[p]); 
      f = true; 
      p++; 
    }
    if (!f) {
      ans += dis(r[i], b[p]);
      p++; 
    }
  }
  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...