Cod sursa(job #2009291)

Utilizator GoogalAbabei Daniel Googal Data 9 august 2017 10:57:35
Problema Triang Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <fstream>
#include <cmath>
#include <algorithm>
#define EPS 0.001

using namespace std;

ifstream in("triang.in");
ofstream out("triang.out");

/*********/

struct Data{
  double x;
  double y;
};

int n,nr;
double k,s,xc,yc;
Data v[1501];

int comp(Data a,Data b){
  return (fabs(a.x - b.x)< EPS && a.y < b.y || a.x < b.x);
}

void serachh(double xc,double yc)
{
  int p=1,u=n,m;
  while(p<=u){
    m=(p+u)/2;
    if(fabs(v[m].x - xc) < EPS && fabs(v[m].y - yc) < EPS){
      nr++;
      return;
    }
    else if(v[m].x > xc || fabs(v[m].x - xc) < EPS && v[m].y > yc)
      u=m-1;
    else
     p=m+1;
  }
}
int main()
{
  in>>n;
  for(int i=1;i<=n;i++)
    in >> v[i].x >> v[i].y;
  in.close();
  sort(v+1,v+n+1,comp);

  for(int i=1;i<=n;i++)
    for(int j=i+1;j<=n;j++)
    {
      k=v[j].x-v[i].x;
      s=v[j].y-v[i].y;
      xc=v[i].x+k/2-sqrt(3)/2*s;
      yc=v[i].y+sqrt(3)/2*k+s/2;
      serachh(xc,yc);
      xc=v[i].x+k/2+sqrt(3)/2*s;
      yc=v[i].y-sqrt(3)/2*k+s/2;
      serachh(xc,yc);
    }
    out << nr/3;
    out.close();
    return 0;
}