Pagini recente » Cod sursa (job #2134142) | Cod sursa (job #395597) | Cod sursa (job #2863255) | Cod sursa (job #2811646) | Cod sursa (job #1119227)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("perle.in");
ofstream out("perle.out");
int w[11111],v[11111],n;
bool merge(int start, int lung)
{
int i,nrC=0;
bool ok=true;
for(i=1;i<=n;++i)
{
w[i]=0;
}
w[1]=start;
for(i=1;i<=n;++i)
{
if(w[i]==0)
{
if(nrC!=0)
{
w[i]=6;
--nrC;
}
else
{
ok=false;
break;
}
}
if(w[i]>=1 && w[i]<=3)
{
if(w[i]!=v[i])
{
ok=false;
break;
}
continue;
}
if(w[i]==4)
{
w[i]=v[i];
continue;
}
if(w[i]==5)
{
if(v[i]==2)
{
w[i]=2;
w[i+1]=5;
continue;
}
if(v[i]==1)
{
w[i]=1;
w[i+1]=4;
w[i+2]=3;
w[i+3]=4;
w[i+4]=6;
continue;
}
ok=false;
break;
}
if(w[i]==6)
{
if(v[i]==2)
{
w[i]==2;
continue;
}
if(v[i]==1)
{
w[i]=1;
w[i+1]=2;
w[i+2]=4;
}
if(v[i]==3)
{
w[i]=3;
w[i+1]=5;
nrC++;
}
}
}
if(ok==true && w[n+1]==0 && nrC==0)
{
return true;
}
return false;
}
void solve()
{
int i;
in>>n;
for(i=1;i<=n;++i)
{
in>>v[i];
}
// 1 2 3
// A -> 4
// B -> 5
// C -> 6
if(merge(4,n) || merge(5,n) || merge(6,n))
{
out<<1<<"\n";
}
else
{
out<<0<<"\n";
}
}
int main()
{
int i,t;
in>>t;
for(i=1;i<=t;++i)
{
solve();
}
return 0;
}