Cod sursa(job #3351649)

Utilizator Dani_951753Asndei Daniel Dani_951753 Data 20 aprilie 2026 18:20:41
Problema Trapez Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <cmath>
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;
ifstream fin("trapez.in");
ofstream fout("trapez.out");

const double INF=1e18;
const double eps=1e-11;


struct point{
    int x, y;
};

double panta(point p1, point p2)
{
    if(p1.x==p2.x) return INF;
    return (double)(p2.y-p1.y)/(p2.x-p1.x);
}

point v[1005];
double pante[500*1005];

int main()
{
    int n, i, j, nr=0;
    
    if(!(fin>>n)) return 0;
        
    for(i=1;i<=n;i++)
        fin>>v[i].x>>v[i].y;
        
    for(i=1;i<n;i++)
        for(j=i+1;j<=n;j++)
            {
                pante[nr++]=panta(v[i],v[j]);
            }
            
    sort(pante,pante+nr);
    
    int total=0;
    int count=1;
    
    for(i=1;i<nr;i++)
    {
        if(abs(pante[i]-pante[i-1])<eps)
        {
            count++;
        }
        else 
        {
            total+=(count*(count-1))/2;
            count=1;
        }
    }
    total+=(count*(count-1))/2;
            
    fout<<total<<endl;
    
    fin.close(); fout.close();
    return 0;
}