Cod sursa(job #1438198)

Utilizator DEFINEtelyEngineersUPB Pirtoaca Vasilescu Zamfiratos DEFINEtelyEngineers Data 19 mai 2015 12:00:12
Problema Patrate 3 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.28 kb
#include <iostream>
#include <fstream>
#include <map>
#include <vector>
#include <cmath>

#define x first
#define y second

std::ifstream in("patrate3.in");
std::ofstream out("patrate3.out");

std::map<std::pair<int, int>, bool> myMap;
std::vector<std::pair<int, int> > points;

int main() {

    int N;
    in >> N;

    for (int i = 0; i < N; i++) {
        double x, y;
        in >> x >> y;

        int x2 = (int) round(x * 10000);
        int y2 = (int) round(y * 10000);

        myMap[std::make_pair(x2, y2)] = true;

        points.push_back(std::make_pair(x2, y2));
    }

    int sol = 0;
    for (int i = 0; i < points.size(); i++)
        for (int j = 0; j < points.size(); j++) {
            if (i == j) continue;

            if (i == 0 && j == 5) {
                i++;
                i--;
            }

            int dx = (points[i].x - points[j].x);
            int dy = (points[i].y - points[j].y);
            std::pair<int, int> P1 = std::make_pair(points[i].x + dy, points[i].y - dx);
            std::pair<int, int> P2 = std::make_pair(points[j].x + dy, points[j].y - dx);

            if (myMap.find(P1) == myMap.end()) continue;
            if (myMap.find(P2) == myMap.end()) continue;

            sol++;
        }

    std::cout << sol / 4 << "\n";
    out << sol / 4 << "\n";
}