Cod sursa(job #767634)

Utilizator gicu_01porcescu gicu gicu_01 Data 14 iulie 2012 01:05:47
Problema Trapez Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <stdio.h>
#include <stdlib.h>
int n,k,p;
float b[100001];

struct punct
{
   int x,y;
} a[1001];

void init()
{
    int i,j; float c1,c2;
    k=0;
    for (i=1; i<=n; i++) scanf("%i%i",&a[i].x,&a[i].y);
    for (i=1; i<n; i++)
     for (j=i+1; j<=n; j++)
     if (a[i].x!=a[j].x)
     {
         k++;
         c1=a[j].y-a[i].y;
         c2=a[j].x-a[i].x;
         b[k]=c1/c2;
     }
}

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

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

void afis()
{
    int i,p=0;
    for (i=2; i<=k; i++)
     if (b[i]==b[i-1]) p++;
    printf("%i\n",p);
}


int main()
{
    freopen("trapez.in","r",stdin);
    freopen("trepez.out","w",stdout);
    scanf("%i",&n);
    init();
    qs(1,k);
    int i;
    p=0;
    for (i=2; i<=k; i++)
     if (b[i]==b[i-1]) p++;
    printf("%i\n",p);
    return 0;
}