124.cpp
来自「平时acm训练时ac的源代码」· C++ 代码 · 共 141 行
CPP
141 行
//124
//Accepted 96 ms 282 kb
#include <stdio.h>
int main(void)
{
int *x1, *x2, *y1, *y2;
int K, i, x, y, c1, c2, j1, j2, j, t[3];
scanf("%d", &K);
x1 = new int[K];
x2 = new int[K];
y1 = new int[K];
y2 = new int[K];
for (i=0; i<K; i++)
{
scanf("%d %d %d %d", &x1[i], &y1[i], &x2[i], &y2[i]);
}
scanf("%d %d", &x, &y);
c1 = 0;
c2 = 0;
j1 = 0;
j2 = 0;
for (i=0; i<K; i++)
{
if (x1[i]==x2[i])
{
if (x>x1[i] && ((y>y1[i]&&y<y2[i]) || (y>y2[i] && y<y1[i])))
{
c1 ++;
}
if (x==x1[i])
{
if ((y>=y1[i]&&y<=y2[i]) || (y>=y2[i] && y<=y1[i]))
{
i = K;
}
else if(y>y1[i] && y>y2[i])
{
for (t[0]=0, j=0; j<K; j++)
{
if (j!=i && ((x1[i]==x1[j] && y1[i]==y1[j]) || (x1[i]==x2[j] && y1[i]==y2[j]) || (x2[i]==x2[j] && y2[i]==y2[j]) || (x2[i]==x1[j] && y2[i]==y1[j])))
{
t[0] ++;
t[t[0]] = j;
if (2==t[0])
{
j = K;
}
}
}
t[0] = 0;
if (x1[t[1]]>x || x2[t[1]]>x)
{
t[0] = 1;
}
if (1==t[0])
{
if (x1[t[2]]<x || x2[t[2]]<x)
{
j2 ++;
}
}
else
{
if (x1[t[2]]>x || x2[t[2]]>x)
{
j2 ++;
}
}
}
}
}
else
{
if (y>y1[i] && ((x>x1[i]&&x<x2[i]) || (x>x2[i] && x<x1[i])))
{
c2 ++;
}
if (y==y1[i])
{
if ((x>=x1[i]&&x<=x2[i]) || (x>=x2[i] && x<=x1[i]))
{
i = K;
}
else if(x>x1[i] && x>x2[i])
{
for (t[0]=0, j=0; j<K; j++)
{
if (j!=i && ((x1[i]==x1[j] && y1[i]==y1[j]) || (x1[i]==x2[j] && y1[i]==y2[j]) || (x2[i]==x2[j] && y2[i]==y2[j]) || (x2[i]==x1[j] && y2[i]==y1[j])))
{
t[0] ++;
t[t[0]] = j;
if (2==t[0])
{
j = K;
}
}
}
t[0] = 0;
if (y1[t[1]]>y || y2[t[1]]>y)
{
t[0] = 1;
}
if (1==t[0])
{
if (y1[t[2]]<y || y2[t[2]]<y)
{
j1 ++;
}
}
else
{
if (y1[t[2]]>y || y2[t[2]]>y)
{
j1 ++;
}
}
}
}
}
}
if (i==K+1)
{
printf("BORDER");
}
else if (0!=(c1+j1)%2 && 0!=(c2+j2)%2)
{
printf("INSIDE");
}
else
{
printf("OUTSIDE");
}
delete x1;
delete y1;
delete x2;
delete y2;
return 0;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?