Cod sursa(job #1153050)

Utilizator StefansebiStefan Sebastian Stefansebi Data 25 martie 2014 10:52:09
Problema Potrivirea sirurilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include<fstream>
#include<string>
using namespace std;
ifstream fin("kmp.in");
ofstream fout("kmp.out");
string p, t;
int m, i, k, v[100], n;

int main(){
    getline(fin, p);
    getline(fin, t);
    p.insert(0, " ");
    t.insert(0, " ");
    n = t.length() - 1;
    m = p.length() - 1;
    for (i = 2; i <= m; i++){
        while (k > 0 and p[k + 1] != p[i])
            k = v[k];
        if (p[k + 1] == p[i]){
            k++;
            v[i] = k;
        }
    }
   // for (i = 1; i <= m; i++)
   //     fout << v[i] << " ";
    i = 0; pm = 0;
    while (pm + i <= n){
        if (p[i] == t[pm + i]){
            if (i == m)
                return pm;
            i++;
        }