Pagini recente » Cod sursa (job #2908308) | Cod sursa (job #2438458)
#include <fstream>
#include <string>
using namespace std;
ifstream cin ("perle.in");
ofstream cout ("perle.out");
int n, m;
int v[10005];
string s;
int main() {
cin >> m;
for(; m; m--) {
cin >> n;
for(int i = 1; i <= n; i++)
cin >> v[i];
if(n == 1) {
cout << "1\n";
continue;
}
bool ok = 1;
s.clear();
s += '$', s += '#';
int i = 1;
while(i <= n) {
while(s[i] - '0' == v[i] && i <= n)
i++;
if(i > n)
break;
if('0' <= s[i] && s[i] <= '9') {
ok = 0;
break;
}
if(s[i] == 'A') {
i++;
continue;
}
if(v[i] == 1) {
if(((i == 1 && n == 3) || s[i] == 'C') && v[i + 1] == 2) {
s.erase(s.begin() + i);
s.insert(i, "12A");
} else if((i == 1 || s[i] == 'B') && v[i + 2] == 3) {
s.erase(s.begin() + i);
s.insert(i, "1A3AC");
} else {
ok = 0;
break;
}
} else if(v[i] == 2) {
if(s[i] == 'C')
s.erase(s.begin() + i), s.insert(i, "2");
else if(i == 1 || s[i] == 'B')
s.erase(s.begin() + i), s.insert(i, "2B");
} else if(v[i] == 3 && (i == 1 || s[i] == 'C')) {
s.erase(s.begin() + i);
s.insert(i, "3BC");
} else {
ok = 0;
break;
}
i++;
}
if(s.size() != n + 1)
ok = 0;
cout << ok << "\n";
}
return 0;
}