Cod sursa(job #1745355)

Utilizator tziplea_stefanTiplea Stefan tziplea_stefan Data 21 august 2016 17:58:48
Problema Trapez Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <fstream>
#include <algorithm>
#define PCT 1005
#define VAL 1000005

using namespace std;

ifstream fin("trapez.in");
ofstream fout("trapez.out");

struct latura
{
    int a;
    int b;
};

latura v[VAL];

int N, i, j, M, nr;
int x[PCT], y[PCT];
long long ans;

bool cmp(latura n, latura m)
{
    if (n.a!=m.a)
      return n.a<m.a;
    else
      return n.b<m.b;
}

int main()
{
    fin >> N;
    for (i=1; i<=N; i++)
    {
        fin >> x[i] >> y[i];
        for (j=1; j<i; j++)
        {
            if (x[j]<x[i])
            {
                v[++M].a=x[i]-x[j];
                v[M].b=y[i]-y[j];
            }
            else
            {
                v[++M].a=x[j]-x[i];
                v[M].b=y[j]-y[i];
            }
          //  fout << i << " " << j << " " << v[M].a << " " << v[M].b << '\n';
        }
    }
    sort(v+1, v+M+1, cmp);
    nr=1;
    for (i=2; i<=M; i++)
    {
        if (v[i].a==v[i-1].a && v[i].b==v[i-1].b)
          nr++;
        else
        {
            ans+=(1LL*nr*(nr-1)) / 2;
            nr=1;
        }
        //fout << nr << '\n';
    }
    fout << ans << '\n';
    fin.close();
    fout.close();
    return 0;
}