Pagini recente » Cod sursa (job #2752758) | Cod sursa (job #2445066) | Cod sursa (job #743133) | Cod sursa (job #1072201) | Cod sursa (job #53546)
Cod sursa(job #53546)
#include <stdio.h>
#include <string.h>
FILE *in = fopen("perle.in", "r"), *out = fopen("perle.out", "w");
int n;
int a[11][10001];
int t=0,poz=0;
void verifica(int i,char * s)
{
printf ("%d %s\n",poz,s);
int mm=strlen(s);
int k=0;
if (s[0]=='b')
{
if (poz<a[i][0]-mm+1)
{
switch (a[i][poz])
{
case 2:
poz++;
verifica(i,"b");
break;
case 1:
if (poz+4<=a[i][0]-mm+1 && a[i][poz+2]==3)
{
poz+=4;
verifica(i,"c");
}
break;
}
}
}
else
if (s[0]=='c')
{
printf("poz=%d elem=%d\n",a[i][0]-mm,poz+2);
if (poz==a[i][0]-mm+1 && a[i][poz]==2)
{
poz++;
t=1;
}
else
if (poz+2<=a[i][0]-mm+1)
{
switch (a[i][poz])
{
case 1:
if (a[i][0]-mm+1==poz+2 && a[i][poz+1]==2)
{
poz+=2;
t=1;
}
//printf("aa %d %d\n",a[i][0]-mm,poz+2);
break;
case 3:
poz++;
verifica(i,"bc");
break;
}
}
}
if (strlen(s)>1 && t==1)
{
t=0;
poz++;
printf("a1\n");
verifica(i,s+1);
}
}
int main()
{
fscanf(in, "%d", &n);
for ( int i = 0; i < n; ++i )
{
fscanf(in, "%d", &a[i][0]);
for ( int j = 1; j <=a[i][0]; ++j )
fscanf(in, "%d", &a[i][j]);
}
printf("\n**************\n");
for ( int i = 0; i < n; ++i )
{
for ( int j = 1; j <=a[i][0]; ++j )
printf("%d ",a[i][j]);
printf("\n");
}
printf("**************\n");
for ( int i = 0; i < n; ++i )
{
t=0;
if(a[i][0]==1)
{
fprintf(out, "%d\n",1);
printf("\nrezultat %d\n",1);
}
else
{
t=0;
switch (a[i][1])
{
case 2:
poz=2;
verifica(i,"b");
break;
case 1:
if (a[i][0]==3 && a[i][2]==2) t=1;
else
if (a[i][0]>3 && a[i][3]==3)
{
poz=5;
verifica(i,"c");
}
break;
case 3:
poz=2;
verifica(i,"bc");
break;
}
fprintf(out, "%d\n",t);
printf("\nrezultat %d\n",t);
printf("*************\n");
}
}
return 0;
}