前两个过了,其他全WA
#include<bits/stdc++.h>
using namespace std;
struct poker{
int f, l;
};
poker fs[105], fr[105];
bool cmp(poker a,poker b){
if(a.f != b.f) return a.f > b.f;
else return a.l < b.l;
}
int main(){
int T;
cin >> T;
while(T--){
int n, m, r, s;
cin >> n >> m >> r >> s;
for(int i = 1; i <= n; i++) cin >> fs[i].f;
for(int i = 1; i <= n; i++) cin >> fs[i].l;
for(int i = 1; i <= n; i++) cin >> fr[i].f;
for(int i = 1; i <= n; i++) cin >> fr[i].l;
sort(fs + 1, fs + n + 1, cmp);
sort(fr + 1, fr + n + 1, cmp);
int fsn = n, frn = n;
int now = 1;
while(fsn != 0 && frn != 0){
if(s == 1) fsn--;
else frn--;
bool flag = 0;
if(s == 1){
for(int j = 1; j <= n; j++){
if(fr[j].f > fs[now].f && fr[j].l == fs[now].l){
fr[j].f = 0, s = 2;
frn--;
flag = 1;
break;
}
}
if(flag == 1)
for(int i = 1; i <= n; i++) {
if(!fr[i].f){
now = i;
break;
}
}
} else{
for(int j = 1; j <= n; j++){
if(fs[j].f > fr[now].f && fs[j].l == fr[now].l){
fs[j].f = 0, s = 1;
fsn--;
flag = 1;
break;
}
}
if(flag == 1)
for(int i = 1; i <= n; i++) {
if(!fs[i].f){
now = i;
break;
}
}
}
}
if(fsn == 0) cout << "FS wins!" << '\n';
else cout << "FR wins!" << '\n';
}
return 0;
}