Pagini recente » Cod sursa (job #3138158) | Cod sursa (job #2976538) | Cod sursa (job #2445480) | Cod sursa (job #1800049) | Cod sursa (job #1720699)
/********************
Created by Sburly
********************/
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
#define err 0.00000000001
unsigned int n;
vector<pair<unsigned long int, unsigned long int> > v(1000);
vector<double> p(1000000);
inline bool aprox(double a, double b)
{
if(-err < a-b && a-b < err)
return true;
return false;
}
int main()
{
ifstream f("trapez.in");
ofstream g("trapez.out");
f >> n;
for(unsigned int i = 0; i < n; i++)
{
f >> v[i].first;
f >> v[i].second;
}
unsigned int k = 0;
unsigned int l = 0;
for(unsigned int i = 0; i < n-1; i++)
{
for(unsigned int j = i+1; j < n; j++)
{
if(v[j].first == v[i].first)
{
l++;
}
else
{
p[k++] = (double)(v[j].second - v[i].second)/(v[j].first - v[i].first);
}
}
}
sort(p.begin(), p.begin()+k);
unsigned int sol = l*(l-1)/2;
l = 1;
for(unsigned int i = 0; i < k-1; i++)
{
if(aprox(p[i],p[i+1]))
l++;
else
{
sol+=l*(l-1)/2;
l=1;
}
}
g << sol;
return 0;
}