거의 알고리즘 일기장

codeforces_ 492B _ B. Vanya and Lanterns 본문

알고리즘 문제풀이

codeforces_ 492B _ B. Vanya and Lanterns

건우권 2020. 5. 6. 21:20

https://codeforces.com/problemset/problem/492/B

 

Problem - 492B - Codeforces

 

codeforces.com

 풀이방법

 주어진 조건은 시간은 1초, n은 최대 1000, l은 최대 10^9 이다.

 n이 1000 밖에 안되므로 그냥 정렬해서 풀면 끝이다.

 slt sort가 어느정도의 시간이 걸리는지 정확히는 모르겠지만( 내 기억엔 O(nlogn)이었던걸로 기억함 ) 퀵소트의 최악의 경우인 O(n^2)이라도 시간은 충분하다. ㅎㅎ


 전체코드

#include <iostream>
#include <algorithm>
#include <vector>
#include <iomanip>

using namespace std;
int N;
long long L;
vector<long long> a;

void Input()
{
	cin >> N >> L;
	long long value;
	for (int i = 0; i < N; i++)
	{
		cin >> value;
		a.push_back(value);
	}
	sort(begin(a), end(a));
}

void solve()
{
	double ans = 0;
	long long diff = 0;
	for (int i = 0; i < (int)a.size() - 1; i++)
		diff = max(diff, a[i + 1] - a[i]);
	ans = (double)diff / 2.0;

	ans = max(ans, double(a[0] - 0));
	ans = max(ans, double(L - a[a.size() - 1]));
	cout << fixed << setprecision(10) << ans << '\n';
}

int main()
{
	Input();
	solve();
	return 0;
}

후기

내 영어해석을 믿을수가 없어서 해석후에 꼭 파파고에 한번씩 돌려보며 다시 이해한다. 공부가 되는것일까?ㅎㅎ

반응형
Comments