Cod sursa(job #1537173)

Utilizator Vlad_317Vlad Panait Vlad_317 Data 26 noiembrie 2015 23:33:15
Problema Trapez Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <stdio.h>
#include <algorithm>
using namespace std;

const int  INF = 2100000;

struct puncte
{
    int x, y;
}v[1001];

struct drepte
{
    int a, b;
}p[1000 * 1000 +1];

int nr = 0;

double abs(double  x)
{
    if( x < 0)
        return -x;
    else
        return x;
}

bool cmp (drepte x, drepte y)
{
    long long val1 = (long long)x.a * y.b;
    long long val2 = (long long)x.b * y.a;
    if(val1 <= val2)
        return true;
    return false;
}

int main()
{
    FILE *fin, *fout;

    fin = fopen("trapez.in", "r");
    fout = fopen("trapez.out", "w");

    int n;

    fscanf(fin, "%d", &n);

    for(int i = 1; i <= n; i++)
        fscanf(fin, "%d %d", &v[i].x, &v[i].y);

    for(int i = 1; i <= n; i++)
    {
        for(int j = i + 1; j <= n; j++)
        {

            p[++nr].a = v[j].y - v[i].y;
            p[nr].b = v[j].x - v[i].x;
        }
    }

    sort(&p[1], &p[nr + 1], cmp);

    int cnt = 0;

    for(int i = 2; i <= nr; i++)
    {
        if((long long)p[i].a * p[i - 1].b == (long long)p[i].b * p[i - 1].a)
            cnt++;
    }

    fprintf(fout, "%d", cnt);

    return 0;
}