Pagini recente » Cod sursa (job #3253800) | Cod sursa (job #2702836) | Cod sursa (job #155762) | Cod sursa (job #1528550) | Cod sursa (job #1402099)
#include <stdio.h>
#include <vector>
#include <algorithm>
#include <math.h>
#include <utility>
#define INF (1LL<<62)
using namespace std;
int n,x,y;
long long minim = INF;
std::vector< std::pair<int,int> > a;
std::vector< int > b;
bool CMPX(std::pair<int,int> A,std::pair<int,int> B)
{
if(A.first<B.first)return true;
else if(A.first==B.first&&A.second<B.second)return true;
else return false;
}
bool CMPY(std::pair<int,int> A,std::pair<int,int> B)
{
if(A.second<B.second)return true;
else if(A.second==B.second&&A.first<B.first)return true;
else return false;
}
int main()
{
freopen("cmap.in","r",stdin);
freopen("cmap.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;++i)
{
scanf("%d %d",&x,&y);
a.push_back( std::make_pair(x,y) );
}
sort(a.begin(),a.end(),CMPX);
for(int i=0;i<a.size()-1;++i)
{
if(minim>(1LL*(a[i].first-a[i+1].first)*(a[i].first-a[i+1].first)+1LL*(a[i].second-a[i+1].second)*(a[i].second-a[i+1].second)))
{
b.clear();
b.push_back(i);
minim = 1LL*(1LL*(a[i].first-a[i+1].first)*(a[i].first-a[i+1].first)+1LL*(a[i].second-a[i+1].second)*(a[i].second-a[i+1].second));
}
else if(minim==(1LL*(a[i].first-a[i+1].first)*(a[i].first-a[i+1].first)+1LL*(a[i].second-a[i+1].second)*(a[i].second-a[i+1].second)))
{
b.push_back(i);
}
}
sort(a.begin(),a.end(),CMPY);
for(int i=0;i<a.size()-1;++i)
{
if(minim>(1LL*(a[i].first-a[i+1].first)*(a[i].first-a[i+1].first)+1LL*(a[i].second-a[i+1].second)*(a[i].second-a[i+1].second)))
{
b.clear();
b.push_back(i);
minim = 1LL*(1LL*(a[i].first-a[i+1].first)*(a[i].first-a[i+1].first)+1LL*(a[i].second-a[i+1].second)*(a[i].second-a[i+1].second));
}
else if(minim==(1LL*(a[i].first-a[i+1].first)*(a[i].first-a[i+1].first)+1LL*(a[i].second-a[i+1].second)*(a[i].second-a[i+1].second)))
{
b.push_back(i);
}
}
/*for(int i=1;;++i)
{
if(1LL*i*i>minim)
{
minim = minim - 1LL*(i-1)*(i-1);
printf("%d.",i-1);
for(int j=547165;j<1000000;++j)
{
if(minim-1LL*(i-1)*(float)(j/1000000)+1LL*(float)(j/1000000)*(float)(j/1000000)==0)
{
printf("%f",(float)(j/1000000));
break;
}
}
break;
}
}*/
printf("%f",sqrt(minim));
return 0;
}