RT,USACO 官方提供的 sol 代码无法通过该 checker。
#include<bits/stdc++.h>
#include "testlib.h"
//checker by Lanbian QianQ
using namespace std;
int main(int argc, char** argv) {
registerTestlibCmd(argc, argv);
int T = inf.readInt();
while(T--) {
int N = inf.readInt();
inf.readSpace();
int P = inf.readInt();
stack <int> s[4];
string F = inf.readToken();
string S = inf.readToken();
for(int i = 0; i < N; i++) {
s[1].push(F[i] - '0');
s[2].push(S[i] - '0');
}
int ansM = ans.readInt();
if(P == 1) {
int playerM = ouf.readInt();
if(playerM != ansM) {
quitf(_wa, "Wrong Answer");
return 0;
}
}
else {
int playerM = ouf.readInt();
if(P == 2) {
if(playerM < ansM || playerM > ansM + 5) {
quitf(_wa, "Wrong Answer");
return 0;
}
}
else {
if(playerM != ansM) {
quitf(_wa, "Wrong Answer");
return 0;
}
}
for(int i = 1, ori, aim; i <= playerM; i++) {
ouf.readEoln();
ori = ouf.readInt(1, 3);
ouf.readSpace();
aim = ouf.readInt(1, 3);
if(ori == aim) {
quitf(_wa, "Wrong Answer");
return 0;
}
if(s[ori].empty()) {
quitf(_wa, "Wrong Answer");
return 0;
}
int topcol = s[ori].top();
while(!s[ori].empty() && s[ori].top() == topcol) {
s[ori].pop();
s[aim].push(topcol);
}
}
if(s[3].empty() == false) {
quitf(_wa, "Wrong Answer");
return 0;
}
if(s[1].empty() || s[2].empty()) {
quitf(_wa, "Wrong Answer");
return 0;
}
int s1top = s[1].top(), s2top = s[2].top();
while(s[1].empty() == false && s[1].top() == s1top) {
s[1].pop();
}
while(s[2].empty() == false && s[2].top() == s2top) {
s[2].pop();
}
if(s[1].empty() == false || s[2].empty() == false) {
quitf(_wa, "Wrong Answer");
return 0;
}
}
ouf.readEoln();
}
quitf(_ok, "Accepted!");
return 0;
}