Cod sursa(job #1585591)

Utilizator georgerapeanuRapeanu George georgerapeanu Data 31 ianuarie 2016 11:40:34
Problema Trapez Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;
FILE *f=fopen("trapez.in","r");
FILE *g=fopen("trapez.out","w");
pair<int ,int> puncte[2000];
long long N,i,j,ci,nr;
long long rez;
double m[2000];
int main()
{
    fscanf(f,"%lld",&N);
    for(i=1;i<=N;i++)
        fscanf(f,"%lld %lld",&puncte[i].first,&puncte[i].second);
    for(i=1;i<=N;i++)
    {
        for(j=i+1;j<=N;j++)
        {
            m[++nr]=double(puncte[i].second-puncte[j].second)/double(puncte[i].first-puncte[j].first);
        }
    }
    sort(m+1,m+nr+1);
    m[nr+1]=-1000000000;
    for(i=1;i<nr;i++)
    {
        ci=i;
        while(m[i]==m[i+1]&&i<=nr)
            i++;
        rez+=(i-ci+1)*(i-ci)/2;
    }
    fprintf(g,"%lld",rez);
    return 0;
}