Cod sursa(job #1567478)

Utilizator dobrebogdanDobre Bogdan Mihai dobrebogdan Data 13 ianuarie 2016 12:45:20
Problema Cele mai apropiate puncte din plan Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include<cstdio>
#include<cmath>
#include<algorithm>
#define ll long long
using namespace std;
pair<ll, ll> ve[100005];
long long dist(pair<ll,ll> a,pair<ll,ll> b)
{
    return (a.first-b.first)*(a.first-b.first)+(a.second-b.second)*(a.second-b.second);
}
int main()
{
freopen("cmap.in","r",stdin);
freopen("cmap.out","w",stdout);
int n,i,j,x;
long long di,d2;
double ans;
di=1000000000;
di=di*di*5;
d2=di;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%lld%lld",&ve[i].first,&ve[i].second);
sort(ve+1,ve+n+1);
j=1;
for(i=1;i<=n;i++)
{
    while(ve[i].first>ve[j].first+d2)
    {
    j++;
    }
    for(x=j;x<i;x++)
    if(dist(ve[x],ve[i])<di)
    {
        di=dist(ve[x],ve[i]);
        d2=sqrt(di);
    }
}
ans=sqrt(di);
printf("%lf\n",ans);
    return 0;
}