Cod sursa(job #1489498)

Utilizator bt.panteaPantea Beniamin bt.pantea Data 21 septembrie 2015 11:53:11
Problema Trapez Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.6 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++)
        for (j=1+i;j<=k;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];*/
                nr++;
            }
        }
    /*for (i=1;i<=k;i++)
    {
        if (p[i].b!=0) cout<<(p[i].a/p[i].b)<<'\n';
        else cout<<"INF\n";
        if (p[i].a*p[i+1].b<=p[i].b*p[i+1].a) continue;
        else cout<<"Gresit\n";
    }
    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;
}