Cod sursa(job #76142)

Utilizator sealTudose Vlad seal Data 8 august 2007 15:02:35
Problema Patrate 3 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
using namespace std;
#include<cstdio>
#include<algorithm>
#define Nm 1000
#define eps 0.00001
int n,ans;
pair<float,float> P[Nm];

void read()
{
    int i;

    freopen("patrate3.in","r",stdin);
    scanf("%d",&n);
    for(i=0;i<n;++i)
        scanf("%f%f",&P[i].first,&P[i].second);
}

bool cmp(pair<float,float> a, pair<float,float> b)
{
    return a.first<b.first-eps
        || a.first<=b.first+eps && a.second<b.second-eps;
}

void solve()
{
    int i,j;
    float dx,dy;
    pair<float,float> p1,p2;

    sort(P,P+n,cmp);

    for(i=0;i<n;++i)
        for(j=i+1;j<n;++j)
            if(P[j].first>P[i].first && P[j].second>=P[i].second)
            {
                dx=P[j].first-P[i].first;
                dy=P[j].second-P[i].second;
                p1=P[i]; p2=P[j];
                p1.first-=dy; p2.first-=dy;
                p1.second+=dx; p2.second+=dx;
                if(binary_search(P,P+n,p1,cmp)
                && binary_search(P,P+n,p2,cmp))
                    ++ans;
            }
}

void write()
{
    freopen("patrate3.out","w",stdout);
    printf("%d\n",ans);
}

int main()
{
    read();
    solve();
    write();
    return 0;
}