Cod sursa(job #981479)
Utilizator | Data | 7 august 2013 11:53:35 | |
---|---|---|---|
Problema | Perle | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 4.41 kb |
#include<fstream>
using namespace std;
int m[4][4],v[10400],i,j,ok,e,g,d,l,n;
ifstream fin("perle.in");
ofstream fout("perle.out");
int B();
int C();
int rezolvare()
{
if(v[1]==1 || v[1]==2)
B();
if(g==0)
return 0;
if(v[1]==3)
C();
if(g==0)
return 0;
}
int main()
{
m[1][1]=1;
m[1][2]=2;
m[1][3]=3;
m[2][1]=52;
m[2][2]=64341;
m[3][1]=2;
m[3][2]=653;
m[3][3]=421;
fin>>n;
for(i=1;i<=n;i++)
{
fin>>l;
for(j=1;j<=l;j++)
{
fin>>v[j];
}
v[j]=0;
if(l==1)
fout<<"1"<<'\n';
if(l==2)
fout<<"0"<<'\n';
if(l==3 && v[1]==1 && v[2]==2)
fout<<"1"<<'\n';
else
{
if(((v[1]==2 && v[2]==3) || (v[1]==3 && v[2]==3)) && l>2)
fout<<"0"<<'\n';
else
{
if(l>=3)
{
e=1;
g=1;
d=rezolvare();
if(e>=n && g==1)
fout<<"1"<<'\n';
else
fout<<"0"<<'\n';
}
}
}
}
}
int B()
{
int aux;
ok=0;
for(j=1;j<=2 && ok!=1;j++)
if(m[2][j]%10==v[e])
ok=1;
if(ok==0)
{
g=0;
return 0;
}
else
{
e++;
aux=m[2][j-1]/10;
while(aux)
{
if(aux%10<4)
{
if(aux%10==v[e])
{
e++;
}
else
{
g=0;
return 0;
}
}
else
{
if(aux%10==4)
{
if(v[e]>0)
{
e++;
}
else
{
g=0;
return 0;
}
}
else
{
if(aux%10==5)
{
B();
if(g==0)
return 0;
}
else
{
if(aux%10==6)
{
C();
if(g==0)
return 0;
}
else
{
g=0;
return 0;
}
}
}
}
aux=aux/10;
}
}
}
int C()
{
int aux;
ok=0;
for(j=1;j<=3 && ok!=1;j++)
if(m[3][j]%10==v[e])
ok=1;
if(ok==0)
{
g=0;
return 0;
}
else
{
e++;
aux=m[3][j-1]/10;
while(aux)
{
if(aux%10<4)
{
if(aux%10==v[e])
e++;
else
{
g=0;
return 0;
}
}
else
{
if(aux%10==4)
{
if(v[e]>0)
{
e++;
}
else
{
g=0;
return 0;
}
}
else
{
if(aux%10==5)
{
B();
if(g==0)
return 0;
}
else
{
if(aux%10==6)
{
C();
if(g==0)
return 0;
}
else
{
g=0;
return 0;
}
}
}
}
aux=aux/10;
}
}
}