Pagini recente » Cod sursa (job #264506) | Cod sursa (job #597846) | Cod sursa (job #2274648) | Cod sursa (job #2131718) | Cod sursa (job #1037350)
#include<iostream>
#include<fstream>
#include<math.h>
using namespace std;
long v[2][100001];
void qsort(long p,long u)
{
int i=p,j=u,m;
m=v[0][(i+j)/2];
do
{
while(v[0][i]<m) i++;
while(v[0][j]>m) j--;
if(i<=j)
{
swap(v[0][i],v[0][j]);
swap(v[1][i],v[1][j]);
i++;j--;
}
}while(i<j);
if(i<=u) qsort(i,u);
if(p<=j) qsort(p,j);
}
void divide(long p,long u,double &r)
{
double r1,r2;
if(u-p==1) r=sqrt(pow((v[0][p]-v[0][u]),2)+pow((v[1][p]-v[1][u]),2));
else
if(u-p>1)
{
int q=(p+u)/2;
divide(p,q,r1);
divide(q,u,r2);
if (r1<r2) r=r1;
else r=r2;
}
}
int main()
{
ifstream f("cmap.in");
freopen("cmap.out", "w", stdout);
long i,n;double r;
f>>n;
for(i=1;i<=n;i++) f>>v[0][i]>>v[1][i];
qsort(1,n);
//for(i=1;i<=n;i++) cout<<v[1][i]<<" "<<v[2][i]<<"\n";
divide(1,n,r);
printf("%.6f",r);
f.close();
return 0;
}