Cod sursa(job #1112235)

Utilizator roxannemafteiuMafteiu-Scai Roxana roxannemafteiu Data 19 februarie 2014 16:36:33
Problema Patrate 3 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.75 kb
#include<cstdio>
#include<utility>
#include<vector>
#include<algorithm>
#include<cmath>
using namespace std;

#define x first
#define y second

FILE *in,*out;

short int n;
int contor;
double abc,ord,mijx,mijy,dx,dy,x2,y2,x3,y3;
vector< pair<double,double> > v;


int main()
{
    in=fopen("patrate3.in","rt");

    fscanf(in,"%hd", &n);

    for(short int i=0; i<n; i++)
    {
        fscanf(in,"%lf %lf", &abc, &ord);
        v.push_back(make_pair(abc,ord));
    }

    fclose(in);

    sort(v.begin(),v.end());

    vector< pair<double,double> > :: iterator unu, doi, end1=v.end()-1, end2=v.end();

    for(unu=v.begin(); unu!=end1; unu++)
    {
        for(doi=unu+1; doi!=end2; doi++)
        {
            mijx=(unu->x + doi->x)/2;
            mijy=(unu->y + doi->y)/2;
            dx=fabs(mijx - unu->x);
            dy=fabs(mijy - unu->y);
            if(unu->y < doi->y)
            {
                x2=mijx+dy;
                y2=mijy-dx;
                x3=mijx-dy;
                y3=mijy+dx;
            }
            else
            {
                x2=mijx-dy;
                y2=mijy-dx;
                x3=mijx+dy;
                y3=mijy+dx;
            }

            x2 = round(x2*10000.0) / 10000.0;
            x3 = round(x3*10000.0) / 10000.0;
            y2 = round(y2*10000.0) / 10000.0;
            y3 = round(y3*10000.0) / 10000.0;

            pair<double, double> pair1 = make_pair(x2, y2), pair2 = make_pair(x3, y3);
            if(binary_search(v.begin(),v.end(),pair1))
                if(binary_search(v.begin(),v.end(),pair2))
                    contor++;
        }
    }


    out=fopen("patrate3.out","wt");
    fprintf(out,"%d",contor);
    fclose(out);

    return 0;
}