求调(代码风还好
查看原帖
求调(代码风还好
782718
Litter_Yin楼主2024/7/12 08:51

AC #1 #2 其他全WA

#include<bits/stdc++.h>
using namespace std;

const int MAXN = 1e2 + 10;
long long n, temp, op, sumfs, sumfr, t;
struct whole
{
	long long f, p;
	bool vis;
}fs[MAXN], fr[MAXN];
bool cmp(whole a, whole b)
{
	if(a.p == b.p) return a.f < b.f;
	return a.p < b.p;
}
long long find(long long pos, string name)
{
	/*
	if name == "fs" : find fr[pos] in fs[]
	if name == "fr" : find fs[pos] in fr[]
	*/
	if(pos == 0)
	{
		if(name == "fs") for(int i = 1; i <= n; i++) if(!fs[i].vis) return i;
		if(name == "fr") for(int i = 1; i <= n; i++) if(!fr[i].vis) return i;
		return 0;
	}
	if(name == "fs")
		for(int i = 1; i <= n; i++)
			if(fr[pos].f == fs[i].f && !fs[i].vis && fs[i].p > fr[pos].p) return i;
	if(name == "fr")
		for(int i = 1; i <= n; i++)
			if(fs[pos].f == fr[i].f && !fr[i].vis && fr[i].p > fs[pos].p) return i;
	return 0;
}

int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0), cout.tie(0);
	cin >> t;
	while(t--)
	{
		cin >> n >> temp >> temp >> op;
		for(int i = 1; i <= n; i++) cin >> fs[i].f;
		for(int i = 1; i <= n; i++) cin >> fs[i].p;
		for(int i = 1; i <= n; i++) cin >> fr[i].f;
		for(int i = 1; i <= n; i++) cin >> fr[i].p;
		sort(fs + 1, fs + 1 + n, cmp);
		sort(fr + 1, fr + 1 + n, cmp);
		sumfs = sumfr = n;
		for(int now = 1; ; now++)
		{
			if(now == 1)
			{
				if(op & 1) temp = find(0, "fs"), sumfs--;
				else temp = find(0, "fr"), sumfr--;
			}
			else
			{
				if(op & 1)
				{
					temp = find(temp, "fs");
					if(temp == 0) now = 0;
					else fs[temp].vis = 1, sumfs--;
				}
				else
				{
					temp = find(temp, "fr");
					if(temp == 0) now = 0;
					else fr[temp].vis = 1, sumfr--;
				}
			}
			if(sumfs == 0)
			{
				cout << "FS wins!\n";
				break;
			}
			if(sumfr == 0)
			{
				cout << "FR wins!\n";
				break;
			}
		}
	}
	
	return 0;
 } 

求调玄关

2024/7/12 08:51
加载中...