Pagini recente » Cod sursa (job #2741846) | Cod sursa (job #377345) | Cod sursa (job #2496136) | Cod sursa (job #1887564) | Cod sursa (job #2751072)
use std::fs::File;
use std::io::{*};
use std::collections::BTreeSet;
fn makes_square(x : &(i32, i32), y : &(i32, i32), set : &BTreeSet<(i32, i32)>) -> bool {
let a = (x.0 + x.1 - y.1, x.1 + y.0 - x.0);
let b = (y.0 + x.1 - y.1, y.1 + y.0 - x.0);
if set.contains(&a) && set.contains(&b) {
return true;
}
return false;
}
fn main() {
let mut set : BTreeSet<(i32, i32)> = BTreeSet::new();
let mut input = BufReader::new(File::open("patrate3.in").unwrap());
let mut output = BufWriter::new(File::create("patrate3.out").unwrap());
let mut line = String::new();
input.read_line(&mut line).unwrap();
let n : usize = line.trim().parse().unwrap();
let mut points : Vec<(i32, i32)> = Vec::new();
for _i in 0..n {
let mut line = String::new();
input.read_line(&mut line).unwrap();
let vars : Vec<f64> = line.split(" ").map(|x| x.trim().parse().unwrap()).collect();
let x : i32 = (vars[0] * 1000.0).round() as i32;
let y : i32 = (vars[1] * 1000.0).round() as i32;
points.push((x, y));
}
for pr in &points {
set.insert(*pr);
}
let mut counter : usize = 0;
for i in 0..n {
for j in i+1..n {
if i != j && makes_square(&points[i], &points[j], &set) {
counter = counter + 1;
}
}
}
writeln!(output, "{}", counter / 2).unwrap();
}