Pagini recente » Cod sursa (job #953455) | Cod sursa (job #2238400) | Cod sursa (job #1253300) | Cod sursa (job #1777082) | Cod sursa (job #1145604)
//#include <iostream>
#include<fstream>
#include<algorithm>
#include<vector>
#include<cmath>
#include<map>
using namespace std;
ifstream cin("trapez.in");
ofstream cout("trapez.out");
int i,j,a,b,s,n;
vector<pair<int,int> > v;
map<pair<int,int>,int> mp;
int comb(int x){
return(x)*(x-1)/2;
}
pair<int,int> panta(pair<int,int> a,pair<int,int> b){
int x=b.first-a.first;
int y=b.second-a.second;
int x1=x,y1=y;
if(x==0){
return make_pair(0,1);
}
if(y==0){
return make_pair(1,0);
}
while(y){
int z=x%y;
x=y;
y=z;
}
x1/=x;
y1/=x;
return make_pair(x1,y1);
}
int main(){
cin>>n;
for(i=1;i<=n;i++){
cin>>a>>b;
v.push_back(make_pair(a,b));
}
for(i=0;i<n;i++){
for(j=i+1;j<n;j++){
pair<int,int> ax;
ax=panta(v[i],v[j]);
mp[ax]++;
}
}
for(map<pair<int,int>,int>::iterator k=mp.begin();k!=mp.end();k++){
s+=comb(k->second);
}
cout<<s;
return 0;
}