Cod sursa(job #1145604)

Utilizator classiusCobuz Andrei classius Data 18 martie 2014 12:29:57
Problema Trapez Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
//#include <iostream>
#include<fstream>
#include<algorithm>
#include<vector>
#include<cmath>
#include<map>

using namespace std;

ifstream cin("trapez.in");
ofstream cout("trapez.out");

int i,j,a,b,s,n;
vector<pair<int,int> > v;
map<pair<int,int>,int> mp;


int comb(int x){
    return(x)*(x-1)/2;
}

pair<int,int> panta(pair<int,int> a,pair<int,int> b){
    int x=b.first-a.first;
    int y=b.second-a.second;
    int x1=x,y1=y;
    if(x==0){
        return make_pair(0,1);
    }
    if(y==0){
        return make_pair(1,0);
    }

    while(y){
        int z=x%y;
        x=y;
        y=z;
    }
    x1/=x;
    y1/=x;
    return make_pair(x1,y1);
}

int main(){
    cin>>n;
    for(i=1;i<=n;i++){
        cin>>a>>b;
        v.push_back(make_pair(a,b));
    }
    for(i=0;i<n;i++){
        for(j=i+1;j<n;j++){
            pair<int,int> ax;
            ax=panta(v[i],v[j]);
            mp[ax]++;
        }
    }

    for(map<pair<int,int>,int>::iterator k=mp.begin();k!=mp.end();k++){
        s+=comb(k->second);
    }
    cout<<s;
    return 0;
}