Pagini recente » Cod sursa (job #1971370) | Cod sursa (job #1625786) | Cod sursa (job #2915418) | Cod sursa (job #293973) | Cod sursa (job #981175)
Cod sursa(job #981175)
#include <cstdio>
#include <utility>
#include <algorithm>
typedef std::pair<int,int> Point;
const int MAX_N(1001);
const int MAX_VALUE(1 << 30);
const double GUARD(0.000001);
double v [MAX_N * MAX_N];
int n, end, Result;
Point p [MAX_N];
inline void Read (void)
{
std::freopen("trapez.in","r",stdin);
std::scanf("%d",&n);
end = (n * (n - 1)) >> 1;
for (int index(1) ; index <= n ; ++index)
std::scanf("%d %d",&p[index].first,&p[index].second);
std::fclose(stdin);
}
inline void Print (void)
{
std::freopen("trapez.out","w",stdout);
std::printf("%d\n",Result);
std::fclose(stdout);
}
inline void Compute (void)
{
int i, j, index(1);
for (i = 1 ; i <= n ; ++i)
for (j = i + 1 ; j <= n ; ++j)
{
v[index] = static_cast<double>(p[j].second - p[i].second) / (p[j].first - p[i].first);
++index;
}
std::sort(v + 1,v + end + 1);
i = 1;
while (i <= end)
{
for (j = i + 1 ; j <= end && v[j] >= v[i] - GUARD && v[j] <= v[i] + GUARD ; ++j)
/* do nothing */;
Result += ((j - i) * (j - i - 1)) >> 1;
i = j;
}
}
int main (void)
{
Read();
Compute();
Print();
return 0;
}