Cod sursa(job #2081333)

Utilizator daniela12Sandu Daniela Teodora daniela12 Data 4 decembrie 2017 17:06:41
Problema Trapez Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <iostream>
#include <fstream>
#include <climits>
#include <stdlib.h>
using namespace std;
ifstream f("trapez.in");
ofstream g("trapez.out");
struct punct
{
    int x, y;
}v[1003];
int n;
void citire()
{
    int i;
    f>>n;
    for(i=1;i<=n;++i)   f>>v[i].x>>v[i].y;
    f.close();
}
int cmp (const void *a, const void *b)
{
    return ((*(punct *)a).y / (*(punct *)a).x) - ((*(punct *)b).y / (*(punct *)b).x);
}
int comb(int n, int k)
{
    if(n==k || k==0)    return 1;
    if(n==k-1 || k==1)  return n;
    return n*comb(n-1, k-1)/k;
}
int main()
{
    citire();
    punct a[n*n];
    int i, j, k=0, nr=0;
    for(i=1;i<n;i++)
        for(j=1+i;j<=n;j++)
            if(v[i].x-v[j].x!=0)
            {   a[k].x=v[i].x-v[j].x;
                a[k].y=v[i].y-v[j].y;
                k++;
            }
            else nr++;
    k--;
    qsort(a,k, sizeof(punct), cmp);
    int nrtrap=0;
    if(nr>=2)
        nrtrap=comb(nr, 2);
    nr=0;cout<<nrtrap<<endl;
    for(i=2;i<=k;i++)
        if(a[i].y*a[i-1].x==a[i-1].y*a[i].x)  cout<<i<<endl,  nr++;
        else nrtrap+=comb(nr,2), nr=0;
    g<<nrtrap;
    g.close();
}