Cod sursa(job #2460336)

Utilizator andrei00001111Pady Eu andrei00001111 Data 23 septembrie 2019 13:57:50
Problema Trapez Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("trapez.in");
ofstream g("trapez.out");
int n,k;
struct punct
{
    int x,y;
}v[1005],panta[1000005];

inline bool mycmp(punct a, punct b)
{
    return a.x*b.y<a.y*b.x;
}
void citire()
{
    f>>n;
    for(int i=1;i<=n;i++)
        f>>v[i].x>>v[i].y;
}
void pante()
{
    int aux=n-1;
    for(int i=1;i<=aux;i++)
        for(int j=i+1;j<=n;j++)
    {
        panta[++k].x=v[j].x-v[i].x;
        panta[k].y=v[j].y-v[i].y;
        if(panta[k].x<0&&panta[k].y<0)panta[k].x=-panta[k].x,panta[k].y=-panta[k].y;
    }
    sort(panta+1,panta+k+1,mycmp);
}
void solve()
{
    citire();
    pante();
    int sum=0,nr=1;
    for(int i=2;i<=k;i++)
        {
            if(panta[i-1].x*panta[i].y==panta[i].x*panta[i-1].y)nr++;
            else sum+=((nr*(nr-1))>>1),nr=1;
        }
    sum+=((nr*(nr-1))>>1);
    g<<sum;
}
int main(void)
{
    solve();
}