Cod sursa(job #60818)

Utilizator FlorianFlorian Marcu Florian Data 16 mai 2007 22:32:55
Problema Subsir Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
//Infoarena
#include<stdio.h>
#include<string.h>
int a[501][501];
long n,m;
FILE*g=fopen("subsir.out","w");
FILE*f=fopen("subsir.in","r");
/*void afisare()
	{
	int i,j;
	for(i=0;i<=n;++i)
		{for(j=0;j<=m;++j)
		fprintf(g,"%d ",a[i][j]);
		fprintf(g,"\n");
		}
	}
  */
int main()
	{
	long p,i,j,sol=0,k;
	char x[501],y[501];
	fscanf(f,"%s",x);
	fscanf(f,"%s",y);
	n=strlen(x);
	for(i=n;i>=1;i--) x[i]=x[i-1];
	m=strlen(y);
	for(i=m;i>=1;i--) y[i]=y[i-1];
	for(i=1;i<=n;++i)
		for(j=1;j<=m;++j)
			{
			if(x[i]==y[j])
				{
				a[i][j]=a[i-1][j-1]+1;
				}
			else
				if(a[i-1][j]>a[i][j-1])
					a[i][j]=a[i-1][j];
				else a[i][j]=a[i][j-1];

			}
        if(a[n][m]==0){ fprintf(g,"0"); return 0;}
	for(i=1;i<=m;++i) if (a[n][i]==a[n][m]) sol++;
	if(sol>2) sol/=2;
	 fprintf(g,"%ld\n",sol);
	//afisare();
	return 0;}