Pagini recente » Cod sursa (job #1113095) | Cod sursa (job #1936270) | Cod sursa (job #2612992) | Cod sursa (job #1248970) | Cod sursa (job #233697)
Cod sursa(job #233697)
//Milut Petronela, CN Roman Voda Roman, clasa a 10a
#include<stdio.h>
FILE *f=fopen("perle.in","r");
FILE *g=fopen("perle.out","w");
#define M 10010
int vf=0,n,l,y[M];
char st[M];
int initializare()
{int i;
i=1;
vf=0;
if(y[i]==1 && y[i+2]==3) {st[++vf]='1';
st[++vf]='A';
st[++vf]='3';
st[++vf]='A';
st[++vf]='C';}
else if(y[i]==1&&y[i+1]==2) {st[++vf]='1';
st[++vf]='2';
st[++vf]='C';}
else if(y[i]==2) {st[++vf]='2';
st[++vf]='B';}
else if(y[i]==3) {st[++vf]='3';
st[++vf]='B';
st[++vf]='C';}
st[vf+1]=NULL;
return 0;
}
int verifica()
{int i=1,j;
while(i<=vf)
{if(st[i]=='B' && y[i]==1) {for(j=i+1;j<=vf;j++)
st[j+4]=st[j];
vf=vf+4;
st[i]='1';
st[i+1]='A';
st[i+2]='3';
st[i+3]='A';
st[i+4]='C';
st[vf+1]=NULL;
i=i+4;}
else if(st[i]=='B' && y[i]==2) {for(j=i+1;j<=vf;j++)
st[j+1]=st[j];
vf=vf+1;
st[i]='2';
st[i+1]='B';
st[vf+1]=NULL;
i++;}
else if(st[i]=='C' && y[i]==1) {for(j=i+1;j<=vf;j++)
st[j+2]=st[j];
vf=vf+2;
st[i]='1';
st[i+1]='2';
st[i+2]='A';
st[vf+1]=NULL;
i=i+2;
}
else if(st[i]=='C'&&y[i]==3) {for(j=i+1;j<=vf;j++)
st[j+2]=st[j];
vf=vf+2;
st[i]='3';
st[i+1]='B';
st[i+2]='C';
i++;
st[vf+1]=NULL;
}
else if(st[i]=='C' && y[i]==2) {st[i]='2';
i++;
st[vf+1]=NULL;}
else if(st[i]!='B'&&st[i]!='C') i++;
}
if(vf==l){ i=1;
for(j=1;j<=l&&i;j++)
if(st[i]=='B') i=0;
else if(st[i]=='C') i=0;
else if(st[i]=='A') if(st[i]-'0'!=y[i]) i=0;
fprintf(g,"%d\n",i);}
else fprintf(g,"0\n");
return 0;
}
int main()
{int k,a,b,j;
fscanf (f,"%d",&n);
for(k=1;k<=n;k++)
{fscanf(f,"%d",&l);
if(l==1) {fprintf(g,"1\n");
fscanf(f,"%d",&a);}
else if(l==2) {fprintf(g,"0\n");
fscanf(f,"%d%d",&a,&b);}
else {for(j=1;j<=l;j++)
fscanf(f,"%d",&y[j]);
initializare();
verifica();}
}
fclose(f);
fclose(g);
return 0;
}