Pagini recente » Cod sursa (job #1323200) | Cod sursa (job #2625736) | Cod sursa (job #2682601) | Cod sursa (job #134152) | Cod sursa (job #1068074)
#include <fstream>
#include <unordered_map>
#include <string>
using namespace std;
typedef pair <int, int> coord;
const int N = 1005;
unordered_map <coord, bool> M;
coord v[N];
int n, p;
void get(coord a, coord b) {
int Y = a.first - b.first, X = a.second - b.second;
map <coord, bool> :: iterator it1, it2, it3, it4;
it1 = M.find(make_pair (a.first + X, a.second - Y));
it2 = M.find(make_pair (b.first + X, b.second - Y));
it3 = M.find(make_pair (a.first - X, a.second + Y));
it4 = M.find(make_pair (b.first - X, b.second + Y));
if (it1 != M.end() && it2 != M.end()) p++;
if (it3 != M.end() && it4 != M.end()) p++;
}
int convert (string s) {
int x = 0, sign = ((s[0] == '-') ? -1 : 1);
for (unsigned i = 0; i < s.size(); ++i)
if (s[i] >= '0' && s[i] <= '9')
x = x * 10 + s[i] - '0';
return x * sign;
}
int main() {
ifstream fin ("patrate3.in");
ofstream fout ("patrate3.out");
fin >> n;
for (int i = 0; i < n; ++i) {
string s[2];
fin >> s[0] >> s[1];
int a = convert(s[0]), b = convert(s[1]);
v[i] = make_pair (a, b);
M[v[i]] = 1;
}
for (int i = 1; i < n; ++i)
for (int j = 0; j < i; ++j)
get (v[j], v[i]);
fout << (p >> 2);
}