Cod sursa(job #2351859)
Utilizator | Data | 22 februarie 2019 19:19:11 | |
---|---|---|---|
Problema | Perle | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 4.2 kb |
//#include <iostream>
#include <fstream>
#include <deque>
using namespace std;
deque<int> dq;
int v[10005];
int main()
{
ifstream cin("perle.in");
ofstream cout("perle.out");
int t,n;
cin>>t;
for(int l=1;l<=t;l++){
cin>>n;
for(int i=1;i<=n;i++){
cin>>v[i];
}
if(n==1){
cout<<"1\n";
continue;
}
while(dq.empty()==false)
dq.pop_front();
if(v[1]==1){
if(n==3 and v[2]==2){
cout<<"1\n";
continue;
}
}
int contor=1,curent=0;
if(v[1]==1){
///incepe B
dq.push_front('B');
curent=2;
}
if(v[1]==2){
///incepe B
dq.push_front('B');
curent=2;
}
if(v[1]==3){
dq.push_front('C');
curent=3;
///incepe C
}
contor=1;
bool ok=0;
//cout<<"iop"<<curent<<" "<<contor<<"iop\n";
while(contor<=n){
//cout<<v[contor]<<"\n";
if(dq.empty()==true){
//cout<<"0\n";
ok=1;
///cout<<"A iesit prin ->1<-\n";
break;
}
char x=dq.front();
dq.pop_front();
if(v[contor]==1){
if(x=='1'){
}
else
if(x=='2'){
//cout<<0<<"\n";
ok=1;
///cout<<"A iesit prin ->2<-\n";
break;
}
else
if(x=='3'){
//cout<<"0\n";
ok=1;
///cout<<"A iesit prin ->3<-\n";
break;
}
else
if(x=='A'){
}
else
if(x=='B'){
dq.push_front('C');
dq.push_front('A');
dq.push_front('3');
dq.push_front('A');
}
else
if(x=='C'){
dq.push_front('A');
dq.push_front('2');
}
}
else
if(v[contor]==2){
if(x=='1'){
//cout<<"0\n";
ok=1;
// cout<<"A iesit prin ->4<-\n";
break;
}
else
if(x=='2'){
}
else
if(x=='3'){
//cout<<"0\n";
ok=1;
// cout<<"A iesit prin ->5<-\n";
break;
}
else
if(x=='A'){
}
else
if(x=='B'){
dq.push_front('B');
}
else
if(x=='C'){
}
}
else
if(v[contor]==3){
if(x=='1'){
//cout<<"0\n";
ok=1;
//cout<<"A iesit prin ->6<-\n";
break;
}
else
if(x=='2'){
//cout<<"0\n";
ok=1;
//cout<<"A iesit prin ->7<-\n";
break;
}
else
if(x=='3'){
}
else
if(x=='A'){
}
else
if(x=='B'){
//cout<<0<<"\n";
ok=1;
//cout<<"A iesit prin ->8<-\n";
break;
}
else
if(x=='C'){
dq.push_front('C');
dq.push_front('B');
}
}
contor++;
}
if(contor==n+1){
if(dq.empty()==true and ok==0){
cout<<1<<"\n";
}
else
cout<<"0\n";
}
else
cout<<"0\n";
///bagam initial B
///bagam ini tial C
}
return 0;
}