60分求助 wa了后4点
查看原帖
60分求助 wa了后4点
1183074
xzy_AK_IOI楼主2024/3/18 22:54
#include<bits/stdc++.h>
using namespace std;
struct pai{
	int hua;
	int dian;
	bool yong;
}fs[110],fr[110];
int n;
int han(int k)
{
	int pan=0;
	int hua2=1000,dian2=1000,zhi;
	if (k==1)
	{
		for (int i=1;i<=n;i++)
		{
			if (!fs[i].yong)
			{
				pan++;
				if (fs[i].hua<hua2)
				{
					dian2=fs[i].dian;
					zhi=i;
					hua2=fs[i].hua;
				}
				else if (fs[i].hua==hua2 && fs[i].dian<dian2)
				{
					dian2=fs[i].dian;
					zhi=i;
				}
			}
		}
		if (pan==1)
		{
			return -1;
		}
		else
		{
			fs[zhi].yong=1;
			//cout<<zhi<<endl;
			return zhi;
		}
	}
	else
	{
		for (int i=1;i<=n;i++)
		{
			if (!fr[i].yong)
			{
				pan++;
				if (fr[i].hua<hua2)
				{
					dian2=fr[i].dian;
					zhi=i;
					hua2=fr[i].hua;
				}
				else if (fr[i].hua==hua2 && fr[i].dian<dian2)
				{
					dian2=fr[i].dian;
					zhi=i;
				}
			}
		}
		if (pan==1)
		{
			return -1;
		}
		else
		{
			fr[zhi].yong=1;
			return zhi;
		}
	}
}
int xun(int k,int max,int kl)
{
	int pan=0;
	int zhi=435435,min=1000;
	if (k==1)
	{
		for (int i=1;i<=n;i++)
		{
			if (!fs[i].yong)
			{
				pan++;
				if (fs[i].hua==kl && fs[i].dian>max && fs[i].dian<min)
				{
					min=fs[i].dian;
					zhi=i;
				}
			}
		}
		if (pan==1 && zhi!=435435)
		{
			return -1;
		}
		else if (zhi==435435)
		{
			return -2;
		}
		else
		{
			fs[zhi].yong=1;
			return zhi;
		}
	}
	else
	{
		for (int i=1;i<=n;i++)
		{
			if (!fr[i].yong)
			{
				pan++;
				if (fr[i].hua==kl && fr[i].dian>max && fr[i].dian<min)
				{
					min=fr[i].dian;
					zhi=i;
				}
			}
		}
		if (pan==1 && zhi!=435435)
		{
			return -1;
		}
		else if (zhi==435435)
		{
			return -2;
		}
		else
		{
			fr[zhi].yong=1;
			return zhi;
		}
	}
}
int main()
{
	int T;
	cin>>T;
	int m,r,s,kl;
	bool pan=1;
	for (int i=1;i<=T;i++)
	{
		cin>>n>>m>>r>>s;
		for (int j=1;j<=n;j++)
		{
			cin>>fs[j].hua;
			fs[j].yong=0;
		}
		for (int j=1;j<=n;j++)
		{
			cin>>fs[j].dian;
		}
		for (int j=1;j<=n;j++)
		{
			cin>>fr[j].hua;
			fr[j].yong=0;
		}
		for (int j=1;j<=n;j++)
		{
			cin>>fr[j].dian;
		}
		int max,hua2;
		pan=1;
		while (1)
		{
			if (pan)
			{
				int h2=han(s);
				//cout<<h2<<" "<<s<<endl;
				if (s==1)
				{
					if (h2<0)
					{
						kl=1;
						goto ab;
					}
					else
					{
						pan=0;
						max=fs[h2].dian;
						hua2=fs[h2].hua;
					}
					s++;
				}
				else
				{
					if (h2<0)
					{
						kl=2;
						goto ab;
					}
					else
					{
						pan=0;
						max=fr[h2].dian;
						hua2=fr[h2].hua;
					}
					s--;
				}
			}
			else
			{
				int h2=xun(s,max,hua2);
				//cout<<h2<<" "<<s<<endl;
				if (s==1)
				{
					if (h2==-1)
					{
						kl=1;
						goto ab;
					}
					else if (h2==-2)
					{
						pan=1;
						s++;
						goto cd;
					}
					else
					{
						max=fs[h2].dian;
						s++;
					}
				}
				else
				{
					if (h2==-1)
					{
						kl=2;
						goto ab;
					}
					else if (h2==-2)
					{
						pan=1;
						s--;
						goto cd;
					}
					else
					{
						max=fr[h2].dian;
						s--;
					}
				}
			}
			cd:;
		}
		ab:;
		if (kl==1)
		{
			cout<<"FS wins!"<<endl;
		} 
		else
		{
			cout<<"FR wins!"<<endl;
		}
	}
	return 0;
} 
2024/3/18 22:54
加载中...