Pagini recente » Profil Madalina.Zoican | Cod sursa (job #2040431) | Cod sursa (job #1822751) | Cod sursa (job #1005196) | Cod sursa (job #941798)
Cod sursa(job #941798)
#include<cstdio>
#include<vector>
#include<algorithm>
#define NMAX 1005
#define INF 0x3f3f3f3f
FILE *f=fopen("trapez.in","r");
FILE *g=fopen("trapez.out","w");
using namespace std;
int n,Answer;
vector <double> slope;
struct point {
int x,y;
}v[NMAX];
void Read( void )
{
fscanf(f,"%d",&n);
for( int i(1) ; i <= n ; ++i )
{
fscanf(f,"%d%d",&v[i].x,&v[i].y);
}
fclose(f);
}
inline double Incline ( const point A , const point B )
{
if(A.x != B.x )
return ((double) B.y-A.y)/(B.x-A.x);
else
return INF;
}
void Solve ( void )
{
for( int i(1) ; i <= n ; ++i )
{
for(int ii(i+1) ; ii <= n ; ++ii )
slope.push_back(Incline(v[i],v[ii]));
}
sort(slope.begin(),slope.end());
for( vector<double>::iterator it=slope.begin() ; it!=slope.end() ; )
{
double val=*it;
int ccount=0;
++it;
while( val == *it && it!=slope.end())
++ccount,++it;
Answer+=ccount *( ccount-1 )/2;
}
}
void Write ( void )
{
fprintf(g,"%d",Answer);
fclose(g);
}
int main ( void )
{
Read();
Solve();
Write();
return 0;
}