Cod sursa(job #330282)

Utilizator Andrei200Andrei200 Andrei200 Data 9 iulie 2009 13:33:00
Problema Iv Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <stdio.h>
#include <string.h>

#define Mod 3210121

int p1,p2,q1,q2,x,nr;
char A[1000];
char B[1000];
int n,m;

void mod(int x)
{
	if (x>=Mod)
		x-=Mod;
}

void tranzitie(int p1,int q1, int p2, int q2)
{
    //int nr=0;
    if (p1>n || p2>m) return ;
    if (A[p1+1]==A[q1-1])
	{
		nr++;
		mod(nr);
		tranzitie(p1+1,q1-1,p2,q2);
		return ;
	}
    else
    if (A[p1+1]==B[q2-1])
	{
		nr++;
		mod(nr);
		tranzitie(p1+1,q1,p2,q2-1);
		return ;
	}
    else
    if (B[p2+1]==A[q1-1])
	{
		nr++;
		mod(nr);
		tranzitie(p1,q1-1,p2+1,q2);
		return ;
	}
    else
    if (B[p2+1]==B[q2-1])
	{
		nr++;
		mod(nr);
		tranzitie(p1,q1,p2+1,q2-1);
		return ;
	}
}

int main()
{
    freopen("iv.in","r",stdin);
    scanf("%s\n", A+1);
    scanf("%s\n", B+1);
    p1=1;
    q1=1;
    p2=strlen(A+1);
    q2=strlen(B+1);
    n=p2;
    m=q2;
    nr=0;
    tranzitie(p1,q1,p1,q2);
    freopen("iv.out","w",stdout);
    printf("%d",(2*nr)%Mod);
    return 0;
}