Pagini recente » Cod sursa (job #22963) | Cod sursa (job #639534) | Cod sursa (job #227812) | Cod sursa (job #1976160) | Cod sursa (job #1451142)
#include<fstream>
#include<iostream>
using namespace std;
ifstream in("trapez.in");
ofstream out("trapez.out");
const int NMAX = 10005;
struct dreapta{
int x1,y1,x2,y2;
int a,b;
bool zero;
};
dreapta v[NMAX * 2];
int A[NMAX],B[NMAX],n,nr;
void read()
{
in>>n;
for(int i = 1 ; i <= n ; ++i)
in>>A[i]>>B[i];
in.close();
}
int cmmdc(int a,int b)
{
if(!b)
return a;
return cmmdc(b,a % b);
}
int abs(int a)
{
if(a >= 0)
return a;
return -a;
}
bool not_equal(int x1,int y1,int x2,int y2)
{
if(x1 == x2 && y1 == y2)
return false;
return true;
}
void solve()
{
for(int i = 1 ; i < n ; ++i)
for(int j = i+1 ; j <= n ; ++j){
int p1 = B[i] - B[j];
int p2 = A[i] - A[j];
if(!p2){
v[++nr].a = p1;
v[nr].b = p2;
}
else if(!p1){
v[++nr].a = p1;
v[nr].b = p2;
}
else{
int cm = cmmdc(abs(p1),abs(p2));
v[++nr].a = p1/cm;
v[nr].b = p2/cm;
}
v[nr].x1 = A[i];
v[nr].y1 = B[i];
v[nr].x2 = A[j];
v[nr].y2 = B[j];
if(v[nr].a == 0 || v[nr].b == 0)
v[nr].zero = true;
else
v[nr].zero = false;
}
int sol = 0;
for(int i = 1 ; i < nr ; ++i)
for(int j = i + 1 ; j <= nr ; ++j)
if(((v[i].a * v[j].b == v[i].b * v[j].a) || (v[i].zero == v[j].zero && v[i].zero == true)) && not_equal(v[i].x1,v[i].y1,v[j].x1,v[j].y1) && not_equal(v[i].x1,v[i].y1,v[j].x2,v[j].y2) && not_equal(v[i].x2,v[i].y2,v[j].x1,v[j].y1) && not_equal(v[i].x2,v[i].y2,v[j].x2,v[j].y2))
++sol;
out<<sol;
}
int main()
{
read();
solve();
return 0;
}