제출 #469751

#제출 시각아이디문제언어결과실행 시간메모리
469751solver1104Palembang Bridges (APIO15_bridge)C++11
0 / 100
1 ms332 KiB
//#pragma warning( disable : 4996 )
#include <bits/stdc++.h>

//#pragma GCC target ("avx2")
//#pragma GCC optimization ("O3")
//#pragma GCC optimization ("unroll-loops")

using namespace std;

int N, K, temp1, temp2;
char tmp1, tmp2;
const int INTMAX = 2147483647;

int main()
{
	/*
	string problemName = "";
	ifstream fin(problemName + ".in");
	ofstream fout(problemName + ".out");
	*/

	ios::sync_with_stdio(0);
	cin.tie(0);

	cin >> K >> N;
	if (K == 1) {
		vector<int> significant;
		map<int,int> starts;
		map<int, int> ends;
		long long int sum = 0;
		int intervalnum = 0;
		int cpv = 0;
		int starting;
		int ending;
		long long int curmin = INTMAX;
		long long int cursum = 0;

		for (int i = 0; i < N; i++) {
			cin >> tmp1 >> temp1 >> tmp2 >> temp2;
			if (tmp1 == tmp2) {
				sum += abs(temp1 - temp2);
			}
			else if (temp1 == temp2) {
				sum += 1;
			}
			else {
				intervalnum++;
				if (temp1 > temp2) {
					swap(temp1, temp2);
				}
				sum += (1 + temp2 - temp1);
				starts[temp1]++;
				ends[temp2] ++;
				significant.push_back(temp1);
				significant.push_back(temp2);
			}
		}
		
		sort(significant.begin(), significant.end());
		cpv = significant[0];
		for (auto i : starts) {
			cursum += 2 * (i.first - cpv) * i.second;
		}
		ending = 0;
		starting = intervalnum - starts[significant[0]];
		for (int i = 1; i < 2 * intervalnum; i++) {
			curmin = min(cursum, curmin);
			cursum += 2 * (significant[i] - significant[i - 1]) * (ending - starting);
			starting -= starts[significant[i]];
			ending += ends[significant[i]];
		}
		curmin = min(curmin, cursum);
		cout << curmin + sum;
	}
	else {

	}
}
#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...