Pagini recente » Cod sursa (job #1963750) | Diferente pentru implica-te/arhiva-educationala intre reviziile 158 si 157 | Cod sursa (job #355612) | Cod sursa (job #2455053) | Cod sursa (job #1863591)
#include<fstream>
#include<algorithm>
#include<cmath>
#define EPS 1e-12
#define DIM 1510
#define x first
#define y second
#define sin 0.8660254
#define cos 0.5
using namespace std;
pair<double, double> v[DIM];
double X1, Y11, X2, Y2;
double x1, y11, x2, y2, t, a, b, A, B, C, d;
int sol, n;
int egal(double a, double b) {
double d = a-b;
if (d <= EPS && d >= -EPS)
return 1;
return 0;
}
int cauta(double x, double y) {
int st = 1, dr = n;
while (st <= dr) {
int mid = (st + dr)/2;
if (egal(v[mid].x, x) && egal(v[mid].y, y)) {
return 1;
}
if (v[mid].x < x || ( egal(v[mid].x, x) && v[mid].y < y ))
st = mid+1;
else
dr = mid-1;
}
return 0;
}
int main(){
ifstream fin ("triang.in");
ofstream fout("triang.out");
fin>>n;
for(int i=1;i<=n;i++)
fin>>v[i].x>>v[i].y;
sort(v+1,v+n+1);
for (int i=1;i<n;i++)
for (int j=i+1;j<=n;j++) {
a = sqrt( (v[i].x - v[j].x) * (v[i].x - v[j].x) + (v[i].y - v[j].y) * (v[i].y - v[j].y) );
X2 = v[i].x + (v[j].x - v[i].x) * cos - (v[j].y - v[i].y) * sin;
Y2 = v[i].y + (v[j].x - v[i].x) * sin + (v[j].y - v[i].y) * cos;
sol += cauta(X2, Y2);
X2 = v[i].x + (v[j].x - v[i].x) * cos + (v[j].y - v[i].y) * sin;
Y2 = v[i].y - (v[j].x - v[i].x) * sin + (v[j].y - v[i].y) * cos;
sol += cauta(X2, Y2);
}
fout<<sol;
return 0;
}