Submission #207719

#TimeUsernameProblemLanguageResultExecution timeMemory
207719lagoon전봇대 (KOI13_pole)C++14
0 / 100
29 ms760 KiB
// boj 8986 전봇대
#include <iostream>
#include <algorithm>

using namespace std;
int position[100000], n;

long long dist(int x) {
	long long ret = 0;
	for (int i = 0; i < n; ++i) {
		ret += abs(x * i - position[i]);
	}
	return ret;
}
int main(void) {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	cin >> n;
	for (int i = 0; i < n; ++i) {
		cin >> position[i];
	}
	long long left = 0;
	long long right = 1e9;

	while (right - left > 3) {
		long long mid1 = left + (right - left) / 3;
		long long mid2 = right - (right - left) / 3;
		if (dist(mid1) < dist(mid2)) right = mid2;
		else left = mid1;
	}
	long long ans = dist(right);
	for (int i = left; i < right; ++i)
		ans = min(ans, dist(i));
	cout << 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...