二分查找STL初体验

来源:互联网 发布:js顶部滑动菜单栏 编辑:程序博客网 时间:2024/05/16 08:51

初体验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;    }}
原创粉丝点击