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とやってミスったのはここだけの秘密。