Cod sursa(job #1462984)

Utilizator cojocarugabiReality cojocarugabi Data 19 iulie 2015 15:48:55
Problema Triang Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.2 kb
# include <bits/stdc++.h>
# define db double
# define x first
# define y second
const double pi = 3.14159265359;
using namespace std;
ifstream fi("triang.in");
ofstream fo("triang.out");
pair < int , int > s[1505];
pair < db , db > v[1505];
int main(void)
{
    int n;
    fi>>n;
    for (int i = 1;i <= n;++i)
    {
        fi>>v[i].x>>v[i].y;
        s[i].x = (int)(v[i].x * 1e3);
        s[i].y = (int)(v[i].y * 1e3);
    }
    sort(s+1,s+1+n);
    int ans = 0;
    for (int i = 1;i <= n;++i)
        for (int j = i + 1;j <= n;++j)
        {
            pair < db , db > p,d;
            p.x = v[j].x - v[i].x;
            p.y = v[j].y - v[i].y;
            d.x = p.x * cos(pi/3) - p.y * sin(pi/3);
            d.y = p.x * sin(pi/3) + p.y * cos(pi/3);
            d.x += v[i].x;d.y += v[i].y;
            ans += binary_search(s+1,s+1+n,make_pair(int(d.x * 1e3),int(d.y * 1e3)));
            d.x = p.x * cos(-pi/3) - p.y * sin(-pi/3);
            d.y = p.x * sin(-pi/3) + p.y * cos(-pi/3);
            d.x += v[i].x;d.y += v[i].y;
            ans += binary_search(s+1,s+1+n,make_pair(int(d.x * 1e3),int(d.y * 1e3)));
        }
    cout << ans << '\n';
    return fo << ans << '\n',0;
}