Pagini recente » Cod sursa (job #1234449) | Cod sursa (job #2698569) | Cod sursa (job #2004349) | Cod sursa (job #1676875) | Cod sursa (job #473012)
Cod sursa(job #473012)
// Triang.cpp : Defines the entry point for the console application.
//
//#include "stdafx.h"
#include "stdio.h"
#include "math.h"
FILE *f=fopen("triang.in", "r");
FILE *g=fopen("triang.out", "w");
int n, nr;
double x[1501], y[1501];
void read()
{
fscanf(f, "%d", &n);
for (int i=1; i<=n; i++)
fscanf(f, "%lf%lf", &x[i], &y[i]);
}
void quicksort(int lo, int hi)
{
int i=lo, j=hi;
double h;
double m=x[(lo+hi)/2];
do
{
while (x[i]<m) i++;
while (x[j]>m) j--;
if (i<=j)
{
h=x[i]; x[i]=x[j]; x[j]=h;
h=y[i]; y[i]=y[j]; y[j]=h;
i++; j--;
}
}while (i<=j);
if (j>lo) quicksort(lo, j);
if (i<hi) quicksort(i, hi);
}
void binar(double xx, double yy)
{
int lo=1, hi=n;
int mid;
while (hi-lo>0)
{
mid=lo+(hi-lo)/2;
if (x[mid]>=xx || abs(x[mid]-xx)<=0.001) hi=mid-1;
else lo=mid+1;
}
mid=lo+(hi-lo)/2;
if (abs(x[mid]-xx)<=0.001 && abs(y[mid]-yy)<=0.001) nr++;
else
{
mid++;
while (abs(x[mid]-xx)>0.001 && abs(y[mid]-yy)>0.001 && mid<=n) mid++;
if (abs(x[mid]-xx)<=0.001 && abs(y[mid]-yy)<=0.001) nr++;
}
}
void program()
{
for (int i=1; i<n-1; i++)
for (int j=i+1; j<n; j++)
{
double x1, y1, x2, y2, x3, y3;
x1=x[j]-x[i];
y1=y[j]-y[i];
x2=x1*(1.0/2.0)-y1*(sqrt(3.0)/2.0);
y2=x1*(sqrt(3.0)/2.0)+y1*(1.0/2.0);
binar(x2, y2);
x3=x1*(1.0/2.0)+y1*(sqrt(3.0)/2.0);
y3=y1*(1.0/2.0)-x1*(sqrt(3.0)/2.0);
binar(x3, y3);
}
fprintf(g, "%d", nr);
}
int main()
{
read();
quicksort(1, n);
program();
return 0;
}