为什么我的答案一直是NO
查看原帖
为什么我的答案一直是NO
1068468
bai_shao_楼主2024/7/18 19:07
#include<bits/stdc++.h>
using namespace std;
inline int read(){
    int x=0,f=1;
    char ch=getchar();
    while(ch<'0'||ch>'9')
    {
        if(ch=='-')
            f=-1;
        ch=getchar();
    }
    while(ch>='0' && ch<='9')
        x=x*10+ch-'0',ch=getchar();
    return x*f;
}
int n,nx,ny;
struct Node 
{
	int x,y;
	char n;
}a[500005];
bool check1(int k)
{
	if(a[k].x!=nx&&a[k].y!=ny) return false;
	
	if(a[k].x==nx)
	{
		for(int i=1;i<=n;i++){
			if(a[i].x==a[k].x&&i!=k){
				if(abs(a[k].x-nx)==abs(a[k].x-a[i].x)+abs(nx-a[i].x)) return false;
			}
		}
	}
	else
	{
		for(int i=1;i<=n;i++){
			if(a[i].y==a[k].y&&i!=k){
				if(abs(a[k].y-ny)==abs(a[k].y-a[i].y)+abs(ny-a[i].y)) return false;
			}
		}
	}
	return true;
}

bool check2(int k)
{
	int xy=nx+ny;
	if(a[k].x+a[k].y!=xy) return false;
	
	for(int i=1;i<=n;i++){
		if((a[i].x>nx&&a[i].y<nx&&a[k].x>nx&&a[k].y<nx)
		||(a[i].x>nx&&a[i].y>nx&&a[k].x>nx&&a[k].y>nx)
		||(a[i].x<nx&&a[i].y<nx&&a[k].x<nx&&a[k].y<nx)
		||(a[i].x<nx&&a[i].y>nx&&a[k].x<nx&&a[k].y>nx)) return false;
	}
	return true;
}
int main()
{
//	freopen(".in","r",stdin);
//	freopen(".out","w",stdout);
	n=read(); nx=read(),ny=read();
	for(int i=1;i<=n;i++)
	{
		a[i].n=getchar();
		a[i].x=read();
		a[i].y=read();
	}
	bool flag=false;
	for(int i=1;i<=n;i++)
	{
		if(a[i].n=='B')  flag=check1(i);
		else if(a[i].n=='R') flag=check2(i);
		else flag=(check1||check2);
	}
	if(flag) {printf("YES"); return 0;}
	printf("NO"); return 0;
}```
请问谁可以帮我看一下为什么WA吗?玄关
2024/7/18 19:07
加载中...