Submission #103862

#TimeUsernameProblemLanguageResultExecution timeMemory
103862E869120Palembang Bridges (APIO15_bridge)C++14
0 / 100
4 ms384 KiB
#include <iostream>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;

long long K, N, M, L[100009], R[100009], cnt;

long long solve_1() {
	vector<long long>X; map<long long, long long>Map;
	for (int i = 0; i < M; i++) {
		X.push_back(L[i]);
		X.push_back(R[i]);
		Map[L[i]] += 2; Map[R[i]] += 2;
	}
	sort(X.begin(), X.end());
	X.erase(unique(X.begin(), X.end()), X.end());

	long long cx = 0, sum = 0, minx = (1LL << 60), dep = -M * 2;
	for (int i = 0; i < M; i++) sum += L[i] + R[i];
	minx = min(minx, sum);

	for (int i = 0; i < X.size(); i++) {
		sum += (X[i] - cx) * dep;
		minx = min(minx, sum);
		dep += Map[X[i]];
		cx = X[i];
	}
	return minx;
}

long long solve_2() {
	return 0;
}

int main() {
	cin >> K >> N;
	for (int i = 0; i < N; i++) {
		char c1, c2; int cl, cr;
		cin >> c1 >> cl >> c2 >> cr;
		if (c1 != c2 && cl != cr) {
			if (cl > cr) swap(cl, cr);
			L[M] = cl;
			R[M] = cr;
			cnt++; M++;
		}
		else cnt += 1LL * abs(cl - cr);
	}

	if (K == 1) {
		cout << solve_1() + cnt << endl;
	}
	if (K == 2) {
		cout << solve_2() + cnt << endl;
	}
	return 0;
}

Compilation message (stderr)

bridge.cpp: In function 'long long int solve_1()':
bridge.cpp:23:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i = 0; i < X.size(); i++) {
                  ~~^~~~~~~~~~
#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...