Pagini recente » Cod sursa (job #1190161) | Cod sursa (job #1331169) | Cod sursa (job #1456494) | Istoria paginii runda/oni2009_z1/clasament | Cod sursa (job #2244519)
#include <fstream>
#define N 10000
using namespace std;
ifstream f("perle.in");
ofstream g("perle.out");
int n,v[N+5];
bool verificare(string c)
{
string s=c;
int it=0;
while(it<s.size())
{
if(v[it]!=s[it]-'0' and s[it]>='1' and s[it]<='3')
return 0;
if(s.size()>n)
return 0;
if(s[it]=='A')
{
if(v[it]==1)
s.replace(it,1,"1");
if(v[it]==2)
s.replace(it,1,"2");
if(v[it]==3)
s.replace(it,1,"3");
}
if(s[it]=='B')
{
if(v[it]==3)
return 0;
if(v[it]==1)
s.replace(it,1,"1A3AC");
if(v[it]==2)
s.replace(it,1,"2B");
}
if(s[it]=='C')
{
if(v[it]==1)
s.replace(it,1,"12A");
if(v[it]==2)
s.replace(it,1,"2");
if(v[it]==3)
s.replace(it,1,"3BC");
}
it++;
}
if(n!=s.size())
return 0;
for(int i=0;i<n;i++)
if(s[i]-'0'!=v[i])
return 0;
return 1;
}
int main()
{
int T;
f>>T;
for(int t=1;t<=T;t++)
{
f>>n;
for(int i=0;i<n;i++)
f>>v[i];
if(verificare("A") or verificare("B") or verificare("C"))
g<<1;
else
g<<0;
g<<"\n";
}
return 0;
}