Pagini recente » Cod sursa (job #2176535) | Cod sursa (job #2449917) | Cod sursa (job #2456729) | Cod sursa (job #2719002) | Cod sursa (job #1150656)
#include<fstream>
#include<algorithm>
using namespace std;
const int inf = 1000000000;
long long n,x[10000],y[10000],b[20000000],k=0;
float a[20000000];
int factorial(int x){
int p=1;
for(int i=1;i<=x;i++)p=p*i;
return p;
}
void algsort1(unsigned l,unsigned r){
unsigned i=l,j=r;
float mij = a[(l+r)/2];
do{
while(a[i]<mij)i++;
while(mij<a[j])j--;
if (i<=j){
swap(a[i],a[j]);
// swap(b[i],b[j]);
i++;
j--;
}
}while(i<=j);
if(l<j)algsort1(l,j);
if(i<r)algsort1(i,r);
}
int main(){
ifstream fin("trapez.in");
ofstream fout("trapez.out");
fin>>n;
for(int i=1;i<=n;i++){
fin>>x[i]>>y[i];
}
for(int i=1;i<=n;i++)
for(int j=i+1;j<=n;j++){
k++;
if(x[i]==x[j])a[k]=inf;
else a[k] = (float)(y[i]-y[j])/(x[i]-x[j]);
}
algsort1(1,k);
int t,i=1;
long long sol=0;
while(i<k){
t=1;
while(a[i]==a[i+1]){
i++;t++;
}
if(t>=2) //sol +=factorial(t)/(2*factorial(t-2));
sol+=(t*(t-1))/2;
i++;
}
fout<<sol;
}