Cod sursa(job #2692774)

Utilizator iulia_udreaIulia Udrea iulia_udrea Data 3 ianuarie 2021 18:01:36
Problema Patrate 3 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <fstream>
#include<algorithm>
#include <vector>
using namespace std;
ifstream cin("patrate3.in");
ofstream cout("patrate3.out");
struct punct{
    double x,y;
};
struct dreapta
{
    punct a,b;
    double d;
};
vector<dreapta>v;
vector<punct>f;
int cmp(dreapta a,dreapta b)
{
    return (a.d<b.d);
}
int cautare(double val,int st)
{
    int dr=v.size()-1;
    while(st<=dr)
    {
        int mj=(st+dr)/2;
        if(v[mj].d==val)return 1;
            else if(v[mj].d<val)st=mj+1;
            else dr=mj-1;
    }
    return 0;
}
int main()
{
    int n,i,j,nr=0,gasit;
    punct a;
    dreapta aux;
    cin>>n;
    for(i=1;i<=n;i++)
    {
        cin>>a.x>>a.y;
        f.push_back(a);
        for(j=0;j<f.size()-1;j++)
        {
            aux.d=(a.x-f[j].x)*(a.x-f[j].x)+(a.y-f[j].y)*(a.y-f[j].y);
            aux.a=a;
            aux.b=f[j];
            v.push_back(aux);
        }
    }
    sort(v.begin(),v.end(),cmp);
    for(i=0;i<v.size();i++)
    {
        gasit=cautare(v[i].d,i+1);
        if(gasit)nr++;
    }
    cout<<nr;
}