Cod sursa(job #825042)

Utilizator monica11Szekely Monica monica11 Data 27 noiembrie 2012 12:37:39
Problema Subsir Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
# include<fstream>
# include<cstring>
# include<algorithm>
# define mod 666013
using namespace std;
ifstream f("subsir.in");
ofstream g("subsir.out");
int c[205][205],s[205][205];
char a[205],b[205];
int lga,lgb;
void citire()
{
    f.getline(a,205);
    f.getline(b,205);
    lga=strlen(a);
    lgb=strlen(b);
}
void rezolva()
{
    int i,j,lg;
    lg=max(lga,lgb);

    for(i=0;i<=lg;++i)
       s[i][0]=s[0][i]=1;
    for(i=0;i<lga;++i)
       for(j=0;j<lgb;++j)
           if(a[i]==b[j])
           {
               c[i+1][j+1]=c[i][j]+1;
               s[i+1][j+1]=s[i][j];
           }
           else
           if (c[i+1][j]==c[i][j+1])
           {
               s[i+1][j+1]=s[i+1][j]+s[i][j+1];
               c[i+1][j+1]=c[i][j+1];
               if (c[i][j+1]==c[i][j])
                  s[i+1][j+1]=s[i+1][j+1]+-s[i][j];
           }
           else
           if (c[i+1][j]<c[i][j+1])
           {
               c[i+1][j+1]=c[i][j+1];
               s[i+1][j+1]=s[i][j+1];
           }
           else
           {
               c[i+1][j+1]=c[i+1][j];
               s[i+1][j+1]=s[i+1][j];
           }
     g<<s[lga][lgb];
}
int main()
{
    citire();
    rezolva();
    return 0;
}