Cod sursa(job #1933470)

Utilizator 1475369147896537415369Andrei Udriste 1475369147896537415369 Data 20 martie 2017 18:54:53
Problema Patrate 3 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;

struct point{
    long long x;
    long long y;
};

bool comparator(point p1, point p2){
    return (p1.x != p2.x) ? (p1.x < p2.x) : (p1.y < p2.y);
}

int N, i, j, squares;
point input[100001], p1, p2;
double xi, yi, dx, dy;

int main(){

    freopen("patrate3.in", "r", stdin);
    freopen("patrate3.out", "w", stdout);

    scanf("%d", &N);

    for(i = 1; i <= N; i++){

        scanf("%lf %lf", &xi, &yi);

        input[i].x = round(xi * 10000);
        input[i].y = round(yi * 10000);
    }
    sort(input + 1, input + N + 1, comparator);

    for(i = 1; i <= N; i++){
        for(j = i + 1; j <= N; j++){

            dx = abs(input[i].x - input[j].x);
            dy = abs(input[i].y - input[j].y);

            p1.x = input[i].x + dy;
            p1.y = input[i].y + dx;
            p2.x = input[j].x + dy;
            p2.y = input[j].y + dx;

            if(binary_search(input + 1, input + N + 1, p1, comparator) &&
               binary_search(input + 1, input + N + 1, p2, comparator)){
                squares++;
            }
        }
    }
    printf("%d", squares);
}