Cod sursa(job #2761030)

Utilizator VladCaloVlad Calomfirescu VladCalo Data 30 iunie 2021 10:53:10
Problema Patrate 3 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.22 kb
//
//  main.cpp
//  patrate3
//
//  Created by Vlad Calomfirescu on 14.05.2021.
//


#include <fstream>
#include <set>
#include <algorithm>
#include <cmath>
using namespace std;

ifstream fin ("patrate3.in");
ofstream fout ("patrate3.out");
set < pair < int, int >>pct;

int
verif (pair < int, int >a, pair < int, int >b) // cautam o lat paralela
{
  int distX, distY;
  if (a == b)
    {
      return 0;
    }
  
  distX = a.second - b.second; //pe ox
    distY = b.first - a.first; //dist dintre 2 pct oarecare //pe oy
  return (pct.find ({a.first + distX, a.second + distY}) != pct.end () &&
          pct.find ({b.first + distX, b.second + distY}) != pct.end ());
    //verificam daca exista in p punctele ce ar completa patratul
}
// p.end=este in interiorul lui p sau nu
int
citeste () // citim si eliminam virgula din numar
{
  double val;
  fin >> val;
  return round (val * 10000);
};

int
main ()
{
  int n, i, rez = 0;
  fin >> n;
  for (i = n; i >= 0; i--)
    {
      pct.insert ( {citeste (), citeste ()} );
    }
for (auto i:pct)
    {
    for (auto j:pct)
    {
      rez += verif (i, j);
    }
    }
  fout << rez / 4 << '\n'; // impartim la 4 deoarece numaram fiecare patrat de 4 ori deoarece verificam fiecare lat
    return 0;}