제출 #552680

#제출 시각아이디문제언어결과실행 시간메모리
552680QwertyPiPalembang Bridges (APIO15_bridge)C++14
22 / 100
120 ms4924 KiB
#include <bits/stdc++.h>
#define fi first
#define se second
#define int long long
#define inf (1LL << 60)
using namespace std;

const int N = 1e5+1;
typedef pair<int, int> pii;
int d[N];

int f(int l, int r, int x){
	if(x < l) return l - x;
	if(x > r) return x - r;
	return 0;
}

int32_t main(){
	int k, n;
	cin >> k >> n;
	vector<pii> A;
	int add = 0;
	for(int i = 0; i < n; i++){
		char c1, c2; int p1, p2;
		cin >> c1 >> p1 >> c2 >> p2;
		add += abs(p2 - p1);
		if(c1 != c2) add++, A.push_back({min(p1, p2), max(p1, p2)});
	}
	
	int ans1 = 0, c1 = 0, p1 = 0, ans = 0, ans2 = inf;
	for(int i = 0; i < A.size(); i++){
		c1 += A[i].fi * 2;
	}
	ans1 = c1;
	int l = 0, r = A.size();
	vector<int> q;
	for(int i = 0; i < A.size(); i++){
		q.push_back(A[i].fi);
		q.push_back(A[i].se);
	}
	sort(q.begin(), q.end());
	for(int i = 0; i < A.size() * 2; i++){
		c1 += (q[i] - p1) * (l - r) * 2;
		p1 = q[i];
		ans1 = min(ans1, c1);
		r--;
	}
	if(k == 1){
		cout << add + ans1 << endl;
		return 0;
	}
	ans = add + ans1;
	n = A.size() * 2, k = A.size();
	for(int x1 = 0; x1 < n; x1++){
		for(int x2 = x1; x2 < n; x2++){
			int res = 0;
			for(int i = 0; i < k; i++){
				int f1 = f(A[i].fi, A[i].se, q[x1]), f2 = f(A[i].fi, A[i].se, q[x2]);
				res += min(f1, f2);
			}
			ans2 = min(ans2, res);
		}
	}
	ans = min(ans, add + ans2);
	cout << ans << endl;
}

컴파일 시 표준 에러 (stderr) 메시지

bridge.cpp: In function 'int32_t main()':
bridge.cpp:31:19: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   31 |  for(int i = 0; i < A.size(); i++){
      |                 ~~^~~~~~~~~~
bridge.cpp:37:19: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   37 |  for(int i = 0; i < A.size(); i++){
      |                 ~~^~~~~~~~~~
bridge.cpp:42:19: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   42 |  for(int i = 0; i < A.size() * 2; 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...