제출 #43680

#제출 시각아이디문제언어결과실행 시간메모리
43680RezwanArefin01Palembang Bridges (APIO15_bridge)C++14
0 / 100
2 ms800 KiB
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef pair<int, int> ii; 

struct ds {
	vector<int> a; 
	vector<ll> s;
	void add(int x) { a.push_back(x); }
	void init() { 
		sort(a.begin(), a.end()); 
		s.resize(a.size()); 
		s[0] = a[0];
		for(int i = 1; i < a.size(); i++) {
			s[i] = s[i - 1] + a[i]; 
		}
	}
	ll get(ll x) {
		int lo = 0, hi = a.size() - 1, idx = -1;
		while(lo <= hi) {
			int mid = lo + hi >> 1; 
			if(a[mid] <= x) idx = mid, lo = mid + 1;
			else hi = mid - 1; 
		}
		if(idx == -1) {
			return s[a.size() - 1] - a.size() * x;
		} else {
			ll ret = x * (idx + 1) - s[idx]; 
			ret += s[a.size() - 1] - s[idx] - (a.size() - 1 - idx) * x; 
			return ret; 
		}
	}
} A, B; 

int main(int argc, char const *argv[]) {
#ifdef LOCAL_TESTING
	freopen("in", "r", stdin);
#endif
	int k, n; cin >> k >> n;
	vector<int> pos; 
	ll ans = 0;
	for(int i = 0; i < n; i++) {
		char p, q; int t, s; 
		cin >> p >> s >> q >> t; 
		if(p == q) ans += abs(s - t); 
		else {
			A.add(s), B.add(t);
			pos.push_back(s);
			pos.push_back(t); 
		}
	}
	A.init(); B.init();
	sort(pos.begin(), pos.end());
	pos.erase(unique(pos.begin(), pos.end()), pos.end());

	ll Min = 1e18;

	for(int p : pos) {
		Min = min(Min, A.get(p) + B.get(p)); 
	}
	cout << Min + A.a.size() + ans << endl;

}

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

bridge.cpp: In member function 'void ds::init()':
bridge.cpp:15:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int i = 1; i < a.size(); i++) {
                    ^
bridge.cpp: In member function 'll ds::get(ll)':
bridge.cpp:22:17: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
    int mid = lo + hi >> 1; 
                 ^
#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...