Cod sursa(job #1489493)

Utilizator bt.panteaPantea Beniamin bt.pantea Data 21 septembrie 2015 11:40:14
Problema Trapez Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f ("trapez.in");
ofstream g ("trapez.out");
struct point
{
    unsigned x,y;
}v[1005];
int n,i,j,k,nr;
struct asd
{
    long long a,b;
}p[1000010];
int poz(int ls, int ld)
{
    int i=ls,j=ld,sw=1;
    while (i<j)
    {
        if (p[i].a*p[j].b>p[i].b*p[j].a)
        {
            p[0]=p[i];
            p[i]=p[j];
            p[j]=p[0];
            sw=!sw;
        }
        i+=sw;
        j-=!sw;
    }
    return i;
}
void quick(int ls, int ld)
{
    int p;
    if (ls<ld)
    {
        p=poz(ls,ld);
        quick(ls,p-1);
        quick(p+1,ld);
    }
}

int main()
{
    f>>n;
    k=0;
    for (i=1;i<=n;i++)
        f>>v[i].x>>v[i].y;
    for (i=1;i<n;i++)
        for (j=i+1;j<=n;j++)
        {
            k++;
            p[k].a=v[j].y-v[i].y;
            p[k].b=v[j].x-v[i].x;
        }
    quick(1,k);
    for (i=1;i<k;i++)
    {
        j=i+1;
        while (p[i].a*p[j].b==p[i].b*p[j].a&&j<=k)
        {
            j++;
            nr++;
        }
    }
    g<<nr;
    return 0;
}