Cod sursa(job #769584)

Utilizator gicu_01porcescu gicu gicu_01 Data 20 iulie 2012 01:05:49
Problema Trapez Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <stdio.h>
#include <stdlib.h>

struct punct
{
    int x;
    int y;
} p[1001];

double a[1000010];
int n;

void sw(double *a,double *b)
{
    double t=*a; *a=*b; *b=t;
}

void qs(int left,int right)
{
    int i,j; double p;
    i=left; j=right; p=a[(i+j)/2];
    while (i<j)
    {
        while (a[i]<p ) i++;
        while (a[j]>p ) j--;
        if (i<=j)
        {
            sw(&a[i],&a[j]);
            i++; j--;
        }
    }
    if (i<right) qs(i,right);
    if (j>left) qs(left,j);
}

int main()
{
    int i,j,k=0,rez;
    freopen("trapez.in","r",stdin);
    freopen("trapez.out","w",stdout);
    scanf("%i",&n);
    for (i=1; i<=n; i++) scanf("%i%i",&p[i].x,&p[i].y);
    for (i=1; i<n; i++)
    for (j=i+1; j<=n; j++)
    if (p[i].x==p[j].x) a[++k]= 2000000000;
     else
     {
         a[++k]=(1.0*(p[i].y-p[j].y))/(1.0*(p[i].x-p[j].x));
      //   printf("%f\n",a[k]);
     }
    qs(1,k);
    rez=0;
    for (i=1; i<k; i++)
    {
    //    printf("%f\n",a[i]);
        j=i+1;
        while (a[i]==a[j]) {rez++; j++;}
    }
    printf("%i",rez);
    return 0;
}