Pagini recente » Cod sursa (job #2137612) | Cod sursa (job #2540549) | Cod sursa (job #2991035) | Cod sursa (job #1828853) | Cod sursa (job #110854)
Cod sursa(job #110854)
#include <fstream.h>
#include <string.h>
#define NMAX 1000
int l[NMAX];
long dim;
char x[NMAX];
int perle()
{ long n=1,k=0;
if (dim==1) return 1;
if (dim==2) return 0;
x[0]='0';
if (l[1]==2) x[1]='B';
else x[1]='C';
x[2]=NULL;
while (k<n&&k<dim)
{ k++;
if (x[k]=='B')
{ switch(l[k])
{ case 1: strcpy(x+k+5,x+k+1);
x[k]='1';
x[k+1]='A';
x[k+2]='3';
x[k+3]='A';
x[k+4]='C';
n=n+4;
break;
case 2: strcpy(x+k+2,x+k+1);
x[k]='2';
x[k+1]='B';
n=n+1;
break;
case 3: return 0;}
}
if (x[k]=='C')
{ switch(l[k])
{ case 1: strcpy(x+k+3,x+k+1);
x[k]='1';
x[k+1]='2';
x[k+2]='A';
n=n+2;
break;
case 2: x[k]='2';
break;
case 3: strcpy(x+k+3,x+k+1);
x[k]='3';
x[k+1]='B';
x[k+2]='C';
n=n+2;
break;}
}
if (x[k]=='1'&&l[k]!=1) return 0;
if (x[k]=='2'&&l[k]!=2) return 0;
if (x[k]=='3'&&l[k]!=3) return 0;
}
if (n!=dim) return 0;
return 1;
}
int main()
{ int n,i,j;
ifstream f("perle.in");
ofstream g("perle.out");
f>>n;
for (i=1;i<=n;i++)
{ f>>dim;
for (j=1;j<=dim;j++) f>>l[j];
g<<perle()<<'\n';
}
f.close();
g.close();
return 0;
}