JOI2006年模擬試験1 問題4@C++(85)

さりげ手こずった。予選レベルで手こずるとか駄目だ自分。

#include <cstdio>
#include <algorithm>
#include <set>
#include <vector>

using namespace std;

int main(int argc,char* argv[])
{
	int n;
	scanf("%d\n",&n);
	vector<pair<int,int> > points(n);
	for(int i=0;i<n;i++) {
		scanf("%d %d\n",&points[i].first,&points[i].second);
	}
	sort(points.begin(),points.end());
	int minlen=400000000;
	for(int i=0;i<n;i++) {
		//printf("%d %d\n",points[i].first,points[i].second);
		int ix=points[i].first;
		int iy=points[i].second;
		for(int j=i+1;j<n;j++) {
			int jx=points[j].first;
			int jy=points[j].second;
			int x=ix-jx;
			int y=iy-jy;
			if(x*x>=minlen) break;
			minlen=min(minlen,x*x+y*y);
		}
	}
	printf("%d\n",minlen);
	return 0;
}

minlen=20000とやってミスったのはここだけの秘密。