Cod sursa(job #2145508)

Utilizator ovidius11Stiriu Ovidius ovidius11 Data 27 februarie 2018 13:34:54
Problema Trapez Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<cstdio>
#include<algorithm>
#include<cstdlib>
#include<cmath>
#define eps 1e-8
using namespace std;
double panta[1000005];
struct point{
int x,y;
}v[1005];
int main(){
freopen("trapez.in","r",stdin);
freopen("trapez.out","w",stdout);
int n,i,u=0,j,vertical=0;
long long rasp=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d%d",&v[i].x,&v[i].y);
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++){
if (v[i].y==v[j].y){
vertical++;
continue;}
panta[++u]=(double)((double)(v[i].x-v[j].x))/((double)(v[i].y-v[j].y));}
rasp=rasp+1LL*vertical*(vertical-1)/2;
sort(panta+1,panta+u+1);
for(i=1;i<=u;){
double x=panta[i];
int cnt=0;
while(fabs(x-panta[i])<=eps && i<=u)
cnt++,i++;
rasp=rasp+1LL*cnt*(cnt-1)/2;}
printf("%lld\n",rasp);
return 0;}