Pagini recente » Cod sursa (job #234127) | Cod sursa (job #551600) | Cod sursa (job #727687) | Cod sursa (job #314378) | Cod sursa (job #2614103)
#include<iostream>
#include<utility>
#include<vector>
#include<algorithm>
#include<fstream>
#include<math.h>
#define fi first
#define se second
using namespace std;
typedef pair <double, double > bs;
vector< bs > v[20010];
int n;
bs a[1010];
bool comp(bs i, bs j){
return (abs(i.fi - j.fi) <= 0.0001 && abs(i.se - j.se) <= 0.0001);
}
bool cmp(bs i, bs j){
if(abs(i.fi - j.fi) <= 0.0001)
return i.se > j.se;
return i.fi > j.fi;
}
bool control(bs pr, bs doi) {
if(doi.se < pr.se || pr.fi == doi.fi)
return 0;
double difx = doi.fi - pr.fi;
double dify = doi.se - pr.se;
bs trei = {doi.fi + dify, doi.se - difx};
bs patru = {pr.fi + dify, pr.se - difx};
//cout <<"c"<<'\n';
int i;
bool u = 0, u2 = 0;
for(i = 0; i < v[(int)(trei.fi) + 10000].size(); i++){
if(comp(trei, v[(int)(trei.fi) + 10000][i])){
u = 1;
break;
}
}
if(!u)
return 0;
for(i = 0; i < v[(int)(patru.fi) + 10000].size(); i++){
if(comp(patru, v[(int)(patru.fi) + 10000][i])){
u2 = 1;
break;
}
}
return u2;
}
int main(){
ifstream cin("patrate3.in");
ofstream cout("patrate3.out");
int ans = 0;
cin >> n;
for(int i = 0;i < n;i++){
cin>>a[i].fi >> a[i].se;
v[(int)(a[i].fi) + 10000].push_back(a[i]);
}
sort(a, a+ n, cmp);
for(int i = 0; i < n - 1;i ++){
for(int j = i + 1;j< n;j++){
if(control(a[i],a[j])){
ans ++;
// cout << a[i].fi <<' ' << a[i].se <<'\n';
// cout << a[j].fi << ' ' << a[j].se << '\n';
}
}
}
cout <<ans;
return 0;
}