Cod sursa(job #1397526)

Utilizator bogdan10bosBogdan Sitaru bogdan10bos Data 23 martie 2015 16:30:43
Problema Trapez Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <ctime>
#include <cmath>
#include <algorithm>
#include <vector>
#include <queue>
#include <deque>

#define INF (1<<30)
#define mod 666013
#define eps 0.00000001

using namespace std;
typedef pair<int, int> punct;
punct a[1005];

double dr, dd, v[1000005];
int n, i, j, x, r, q;

double getPanta(punct a, punct b)
{
    double dr;
    dr = (double)(b.second-a.second) / (double)(b.first-a.first);
    return dr;
}

int main()
{
    freopen("trapez.in", "r", stdin);
    freopen("trapez.out", "w", stdout);
    scanf("%d", &n);
    for(i=1;i<=n;i++)
        scanf("%d%d", &a[i].first, &a[i].second);

    for(i=1;i<n;i++)
        for(j=i+1;j<=n;j++)
        {
            dr=getPanta(a[i], a[j]);
            v[++q]=dr;
        }
    sort(v+1, v+q+1);
    r=0;
    dr=0;
    x=0;
    for(i=1;i<=q;i++)
    {
        if(fabs(dr-v[i])<eps)
        {
            x++;
        }
        else
        {
            r+=x*(x-1)/2;
            x=1;
            dr=v[i];
        }
    }
    r+=x*(x-1)/2;
    printf("%d", r);
    return 0;
}