Pagini recente » Cod sursa (job #798011) | Cod sursa (job #2903602) | Cod sursa (job #1754457) | Cod sursa (job #2179256) | Cod sursa (job #1517916)
#include <iostream>
#include <stdio.h>
#include <cmath>
using namespace std;
struct Punct{
double x, y;
double dist;
};
Punct p[1501];
void inter(Punct &p1, Punct &p2){
Punct paux=p1;
p1=p2;
p2=paux;
}
double latura(Punct a, Punct b){
return sqrt(pow(a.x-b.x, 2)+pow(a.y-b.y, 2));
}
bool triunghi(Punct a, Punct b, Punct c){
if(latura(a, c)==latura(b, c) && latura(b, c)==latura(a, b))
return true;
return false;
}
int main()
{
FILE *fin=fopen("triang.in", "r");
FILE *fout=fopen("triang.out", "w");
int n, x, k=0;
double lat;
fscanf(fin, "%d", &n);
for(int i=1; i<=n; ++i){
fscanf(fin, "%f%f", &p[i].x, &p[i].y);
p[i].dist=sqrt(pow(p[i].x, 2)+pow(p[i].y, 2));
}
for(int i=1; i<n; ++i){
x=i;
for(int j=i+1; j<=n; ++j)
if(p[j].dist<p[x].dist)
x=j;
if(i!=x)
inter(p[i], p[x]);
}
for(int i=1; i<=n-2; ++i){
for(int j=i+1; j<=n-1; ++j){
lat=latura(p[i], p[j]);
for(int z=j+1; z<=n && lat>=latura(p[i], p[z]); ++z)
if(triunghi(p[i], p[j], p[z]))
k++;
}
}
fprintf(fout, "%d", k);
return 0;
}