Scape非常喜欢在和Mythological逛公园的时候,讲时间复杂度的知识给她听。但是他很快便伤心地发现Mythological对复杂度的兴趣,还没有旁边的蚯蚓列队表演的兴趣高,只好向whx诉苦。
whx面对Scape的疑惑,告诉他,重要的是Mythological喜欢什么,而不是他自己喜欢什么。Scape发现Mythological特别喜欢玩Geometry Dash,所以特意下载了一个来玩。
打开游戏,Scape发现平面直角坐标系上有
Scape很快反应过来,以原点
如果一个三角形的内部不包含任何蓝点,Scape称该三角形是空的,否则,Scape称该三角形是非空的。
Scape的任务是判断以原点和任意两个红点为顶点构成的
任务
你需要编写一个函数 check_triangles,以完成题目的任务:
- check_triangles(n, m, rx, ry, bx, by, result)
- n: 坐标系上给出的红点个数。
- m: 坐标系上给出的蓝点个数。
- rx: 大小为
的数组;rx[i] 表示红点 的横坐标,其中 。 - ry: 大小为
的数组;ry[i] 表示红点 的纵坐标,其中 。 - bx: 大小为
的数组;bx[i] 表示蓝点 的横坐标,其中 。 - by: 大小为
的数组;by[i] 表示蓝点 的纵坐标,其中 。 - result: 大小为
的二维数组;你需要将三角形 ( )的判断结果存放到 result[i][j] 中:若三角形 非空,则将任意一个在其内部的蓝点 的编号 存放到 result[i][j] 中,否则将 存放到 result[i][j] 中。你不应当访问 范围以外的 result[i][j]。
实现细节
本题只支持 C/C++。
你只能提交一个源文件实现如上所述的 check_triangles 函数,并且遵循下面的命名和接口。你需要包含头文件 triangles.h。
void check_triangles(int n, int m, int *rx, int *ry, int *bx, int *by, int **result);
如果有不清楚的地方,见样例及测评库下载,内附了样例程序。
评测方式
评测系统将读入如下格式的输入数据:
- 第
行:数据类型 (值为 或 )。 - 第
行: , 。 - 第
行:rx[i], ry[i]。 - 第
行:bx[i], by[i]。
对于样例数据,
对于测试数据,
注意:
样例一
input
1 4 3 3 3 -2 4 5 -5 -4 -2 3 -1 1 0 -3 -2
output
-1 0 -1 1 -1 2
explanation
如下图所示:
样例输出中 result[0][2]=0 可以改成 1,这是因为
样例二
见样例及测评库下载。该样例输出共包含
样例三
见样例及测评库下载。该样例输出共包含
限制与约定
对于所有数据,
为避免精度误差,保证任意三点构成的夹角在
子任务 | 分值 | ||
---|---|---|---|
1 | 32 | ||
2 | 46 | ||
3 | 22 |
时间限制:
空间限制: