Pagini recente » Perioada2 | Istoria paginii algoritmiada-2019/runda-maraton/clasament | saseg | QNP | Cod sursa (job #3201212)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("perle.in");
ofstream fout("perle.out");
int t, n, v[10002], i;
static inline bool A();
static inline bool B();
static inline bool C();
static inline bool A() {
if(i == n + 1) return false;
if(v[i] == 1 || v[i] == 2 || v[i] == 3) {
i++;
return true;
}
return false;
}
static inline bool B() {
if(i == n + 1) return false;
if(v[i] == 2) {
i++;
return B();
}
if(v[i] == 1) {
i++;
if(!A()) return false;
if(v[i] != 3) return false;
i++;
if(!A()) return false;
if(!C()) return false;
return true;
}
return false;
}
static inline bool C() {
if(i == n + 1) return false;
if(v[i] == 2) {
i++;
return true;
}
if(v[i] == 3) {
i++;
if(!B()) return false;
if(!C()) return false;
return true;
}
if(v[i] == 1) {
i++;
if(v[i] != 2) return false;
i++;
if(!A()) return false;
return true;
}
}
static inline bool Rezolva() {
fin >> n;
for(i = 1; i <= n; i++) fin >> v[i];
i = 1;
if(A() && i == n + 1) return true;
i = 1;
if(B() && i == n + 1) return true;
i = 1;
if(C() && i == n + 1) return true;
return false;
}
int main() {
fin >> t;
while(t--) fout << Rezolva() << "\n";
return 0;
}