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;
}
求调玄关