Cod sursa(job #2146764)

Utilizator ovidius11Stiriu Ovidius ovidius11 Data 28 februarie 2018 10:44:10
Problema Trapez Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include<cstdio>
#include<unordered_map>
#include<cmath>
#include<algorithm>
#define pi 3.1415926535897932384626433832795
#define eps 1e-14
using namespace std;
struct hashr{
int operator () (const double &x) const{
int rez=x/pi;
return rez;}
};
struct equali{
bool operator () (const double &x,const double &y) const{
if (abs(x-y)<eps)
return 1;
return 0;}
};
unordered_map<double,int,hashr,equali>m;
pair<int,int>v[1005];
int main(){
freopen("trapez.in","r",stdin);
freopen("trapez.out","w",stdout);
int n,i,j,u=0,vertical=0;
long long rasp=0;
scanf("%d",&n);
if (n>500){
for(i=1;i<=n;i++)
scanf("%d%d",&v[i].first,&v[i].second);
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++){
if (v[i].second==v[j].second){
m[(double)2000000000]++;
continue;}
m[(double)(v[i].first-v[j].first)/(double)(v[i].second-v[j].second)]++;}
for(auto& it:m)
rasp=rasp+1LL*it.second*(it.second-1)/2;
printf("%lld\n",rasp);}
return 0;}