poj2318
简单题,二分查找
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
using namespace std;
#define maxn 5005
struct Line
{
int u, d;
} line[maxn];
int n, m, x1, x2, y1, y2;
int toy[maxn];
bool left(int x, int y, Line a)
{
if (x < a.d + (y - y2) * (a.u - a.d) * 1.0 / (y1 - y2))
return true;
return false;
}
int binarysearch(int x, int y)
{
int l = 0, r = n;
int mid;
while (l < r)
{
mid = (l + r) / 2;
if (left(x, y, line[mid]))
r = mid;
else
l = mid + 1;
}
return l;
}
int main()
{
//freopen("t.txt", "r", stdin);
while (scanf("%d", &n), n != 0)
{
memset(toy, 0, sizeof(toy));
scanf("%d%d%d%d%d", &m, &x1, &y1, &x2, &y2);
for (int i = 0; i < n; i++)
scanf("%d%d", &line[i].u, &line[i].d);
for (int i = 0; i < m; i++)
{
int x, y;
scanf("%d%d", &x, &y);
toy[binarysearch(x, y)]++;
}
for (int i = 0; i <= n; i++)
printf("%d: %d\n", i, toy[i]);
printf("\n");
}
return 0;
}