제출 #1342083

#제출 시각아이디문제언어결과실행 시간메모리
1342083madamadam3전선 연결 (IOI17_wiring)C++20
0 / 100
1 ms344 KiB
#include "wiring.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
using vi = vector<int>;

ll min_total_length(vi r, vi b) {
	set<int> red, blue;
	ll ans = 0;
	int i = 0, j = 0;

	while (i < r.size() && j < b.size()) {
		if (r[i] < b[j]) {
			if (!blue.empty()) {ans += r[i++] - *blue.begin(); blue.erase(*blue.begin());}
			else red.insert(r[i++]);
		} else {
			if (!red.empty()) {ans += b[j++] - *red.begin(); red.erase(*red.begin());}
			else blue.insert(b[j++]);
		}
	}

	while (i < r.size()) {
		if (!blue.empty()) {ans += r[i++] - *blue.begin(); blue.erase(*blue.begin());}
		else ans += r[i++] - b.back();
	}

	while (j < b.size()) {
		if (!red.empty()) {ans += b[j++] - *red.begin(); red.erase(*red.begin());}
		else ans += b[j++] - r.back();
	}
	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...