Cod sursa(job #3223240)

Utilizator Dia3141Costea Diana Stefania Dia3141 Data 12 aprilie 2024 19:30:32
Problema Patrate 3 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.53 kb
#include <fstream>
#include <cmath>
#include <algorithm>
using namespace std;
ifstream cin("patrate3.in");
ofstream cout("patrate3.out");
struct coord{
long long x,y;
}v[1002];
bool cmp(coord a,coord b){
    if(a.x==b.x)
        return a.y<b.y;
    return a.x<b.x;
}
int p,n;
bool gasit(long long x,long long y){
    int st=1,dr=n;
    while(st<=dr){
        int mid=(st+dr)/2;
        if(v[mid].x==x){
            if(v[mid].y==y)
                return 1;
            if(v[mid].y<y)
                st=mid+1;
            else
                dr=mid-1;
        }else if(v[mid].x<x)
            st=mid+1;
        else
            dr=mid-1;
    }
    return 0;
}
char s[15];
long long get_number(){
    long long n=0;
    int semn=1,i=0;
    if(s[0]=='-')
        semn=-1;
    while(s[i]!=0){
        if(s[i]=='-'){
            semn=-1;
            i++;
        }else if(s[i]=='.')
            i++;
        else n=n*10+s[i++]-'0';
    }
    return n*semn;
}
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>s;
        v[i].x=get_number();
        cin>>s;
        v[i].y=get_number();
    }
    sort(v+1,v+n+1,cmp);
    for(int i=1;i<n;i++){
        long x1=v[i].x,y1=v[i].y;
        for(int j=i+1;j<=n;j++){
            long long x2=v[j].x,y2=v[j].y;
            long long xm=(x1+x2)/2,ym=(y1+y2)/2;
            long long dx=abs(xm-x1),dy=abs(ym-y1);
            if(y1<y2&&gasit(xm-dy,ym+dx)&&gasit(xm+dy,ym-dx))
                p++;
        }
    }
    cout<<p;
    return 0;
}