20分求调
查看原帖
20分求调
1315459
Ericwer楼主2024/11/3 18:19

前两个过了,其他全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;
}
2024/11/3 18:19
加载中...