初体验stl之二分查找和对象排序
题目链接地址
#include <iostream>
#include <stdio.h>
#include <vector>
#include <algorithm>
using namespace std;
struct Point {
int x, y;
Point(int x, int y) : x(x), y(y) {}
bool operator<(const Point &p) const {
if (x == p.x) return y < p.y;
return x < p.x;
}
};
vector<Point> pointvector;
int main() {
int n;
int count;
while (scanf("%d", &n) && n) {
count = 0;
pointvector.clear();
int x, y;
for (int i = 0; i < n; ++i) {
scanf("%d %d", &x, &y);
Point p(x, y);
pointvector.push_back(p);
}
sort(pointvector.begin(), pointvector.end());
int xx,yy;
for (int i = 0; i < pointvector.size(); ++i) {
for (int j = i+1; j < pointvector.size(); ++j) {
Point p1 = pointvector[i];
Point p2 = pointvector[j];
xx = p1.x + (p1.y - p2.y);
yy = p1.y + (p2.x - p1.x);
Point p3(xx,yy);
xx = p2.x + (p1.y - p2.y);
yy = p2.y + (p2.x - p1.x);
Point p4(xx,yy);
if (binary_search(pointvector.begin(),pointvector.end(),p3)&&
binary_search(pointvector.begin(),pointvector.end(),p4))
count++;
}
}
cout<<count/2<<endl;
}
}