Cod sursa(job #1572437)
Utilizator | Data | 18 ianuarie 2016 22:06:51 | |
---|---|---|---|
Problema | Perle | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 2.14 kb |
#include<fstream>
#include<cstring>
using namespace std;
int t, n, i;
int v[10005];
char s[20005];
ifstream fin("perle.in");
ofstream fout("perle.out");
int f(){
int u = 1, i;
for(i = 1; i <= n; i++){
if(s[u] == 'A'){
u--;
}
else{
if(s[u] == 'B'){
if(v[i] == 2){
s[u] = 'B';
}
else{
if(v[i] == 1){
s[u] = 'C';
s[++u] = 'A';
s[++u] = '3';
s[++u] = 'A';
}
else{
return 0;
}
}
}
else{
if(s[u] == 'C'){
if(v[i] == 2){
u--;
}
else{
if(v[i] == 3){
s[u] = 'C';
s[++u] = 'B';
}
else{
s[u] = 'A';
s[++u] = '2';
}
}
}
else{
if(v[i] == s[u] - '0'){
u--;
}
else{
return 0;
}
}
}
}
if(n - i < u){
return 0;
}
}
return 1;
}
int main(){
fin>> t;
for(; t; t--){
fin>> n;
for(i = 1; i <= n; i++){
fin>> v[i];
}
memset(s, 0, sizeof(s));
s[1] = 'A';
if(f() == 1){
fout<<"1\n";
continue;
}
memset(s, 0, sizeof(s));
s[1] = 'B';
if(f() == 1){
fout<<"1\n";
continue;
}
memset(s, 0, sizeof(s));
s[1] = 'C';
if(f() == 1){
fout<<"1\n";
continue;
}
fout<<"0\n";
}
return 0;
}