Cod sursa(job #1154818)

Utilizator RaduGabriel2012Dinu Radu RaduGabriel2012 Data 26 martie 2014 13:38:18
Problema Potrivirea sirurilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("virus.in");
ofstream g("virus.out");
 char s[100005],c[1005];
  int l,q,l2,p[1005];

 void Match()
 {  int i,k,sol=0;
    k=0;
   for(i=2;i<=l2;i++)
    {while (k && c[k+1]!=c[i])
        k=p[k];
     if (c[k+1]==c[i]) k++;
       p[i]=k;
    }
    k=0;

   for(i=1;i<=l;i++)
    {
      while (k && c[k+1]!=s[i])
        k=p[k];
     if (c[k+1]==s[i]) k++;

      if (k==l2) sol++;
    }
   g<<sol<<"\n";
 }

int main()
{ int i;

    f>>l>>q; f.getline(s,2);
   f>>(s+1); s[0]=' ';

    for(i=1;i<=q;i++)
     { f>>l2; f.getline(c,2);
        f>>(c+1); c[0]=' ';
        Match();
     }

    return 0;
}