Cod sursa(job #799155)

Utilizator mipsPavel Mircea mips Data 18 octombrie 2012 01:40:21
Problema Subsir Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <iostream>
#include <stdlib.h>
#include <fstream>
#include <vector>
#include <cmath>
#include <set>
using namespace std;
ifstream fin("subsir.in");
ofstream fout("subsir.out");
set<string> maxSet;
int maxSize[500][500];
int maxTotal;
int main()
{
    string s1,s2;
    fin >> s1;
    fin >> s2;
    //cout << endl<<s2<<endl;

    for (int i=0;i<s1.size();i++)
    for (int j=0;j<s2.size();j++)
    {
        if (s1[i] == s2[j])
        {
            if (i>0&&j>0)
            {
                maxSize[i][j] = max(maxSize[i][j],maxSize[i-1][j-1]+1);
            }
            else
            {
                maxSize[i][j] = 1;
            }

            if (maxTotal <maxSize[i][j])
            {
                maxTotal = maxSize[i][j];
                maxSet.clear();
                maxSet.insert(s1.substr(i-maxSize[i][j]+1,maxSize[i][j]));
            }
            else
            if (maxTotal == maxSize[i][j])
            {

                maxSet.insert(s1.substr(i-maxSize[i][j]+1 , maxSize[i][j]));
            }
        }
    }
    fout << maxSet.size();

}