utsubo’s blog

競技プログラミングとか.

yukicoder No.135 とりあえず1次元の問題

問題

N個の1次元の座標が与えられ、その中から同じ座標ではない2点を選ぶ。
最小距離を求めよ。

感想

星1だし制約を確認せずに全探索で大丈夫では思ったらTLE。

unique使ってみた!

#include <bits/stdc++.h>
#define MOD 1000000007

using namespace std;

typedef pair<int,int> P;
typedef pair<int,pair<int,int>> PP;
typedef long long LL;

const double EPS = 1e-8;
const int INF = 1e9;

int dy[] = {0,1,0,-1};
int dx[] = {1,0,-1,0};

int main(void) {
	int N;
	int ret = INF;
	cin >> N;
	vector<int> x(N);
	for(int i=0;i<N;i++)cin >> x[i];

	sort(x.begin(),x.end());
	x.erase( unique(x.begin(),x.end()), x.end());
	
	for(int i=0;i<x.size()-1;i++){
		ret = min(x[i+1]-x[i],ret);
	}
	if(ret == INF)cout << 0 << endl;
	else cout << ret << endl;
	return 0;
}

ブログのネタを探しています。