Pagini recente » Cod sursa (job #2564386) | Cod sursa (job #1862949) | Cod sursa (job #1196520) | Cod sursa (job #647360) | Cod sursa (job #2614097)
#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 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;
//cout << (int)(trei.fi) << ": " <<'\n';
for(i = 0; i < v[(int)(trei.fi) + 10000].size(); i++){
//cout <<trei.fi<<' '<<trei.se <<' '<< v[(int)(trei.fi) + 10000][i].fi << ' ' << v[(int)(trei.fi) + 10000][i].se <<' '<< (trei.se == v[(int)(trei.fi) + 10000][i].se) <<'\n';
if(comp(trei, v[(int)(trei.fi) + 10000][i])){
u = 1;
// cout <<"blea!\n";
}
}
//cout <<'\n';
if(!u)
return 0;
// cout << u<<'\n';
for(i = 0; i < v[(int)(patru.fi) + 10000].size(); i++){
if(comp(patru, v[(int)(patru.fi) + 10000][i])){
u2 = 1;
break;
}
}
// cout << u2 << '\n'<<'\n';
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]);
// cout << (int)a[i].fi + 10000 <<'\n';
}
sort(a, a+ n);
/*for(int i = 10000; i< 12000;i++){
if(v[i].size()){
cout << i << ": ";
for(int j = 0; j < v[i].size();j++)
cout << v[i][j].fi <<' '<<v[i][j].se << ' ';
cout<<'\n';
}
}*/
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;
}