Cod sursa(job #104467)

Utilizator georgianaGane Andreea georgiana Data 16 noiembrie 2007 10:15:39
Problema Abc2 Scor 0
Compilator cpp Status done
Runda Happy Coding 2007 Marime 1.26 kb
#include <stdio.h>
#include <string.h>

#define Nmax 50002
#define Cmax 10000002
#define cmax 22

char s[Cmax],cuv[cmax];
int lgs,lgc,nr,t[1500000][3];



int main()
{
    freopen("abc2.in","r",stdin);
    freopen("abc2.out","w",stdout);
    s[0]=0;
    fgets(s,Cmax,stdin);
    lgs=strlen(s)-1;
    for (int i=0;i<lgs;i++) s[i]-='a';
    
    memset(t,0,sizeof(t));
    nr=1;
    while (1)
    {
          cuv[0]=0;
          fgets(cuv,cmax,stdin);

          if (!cuv[0]) break;
          
          lgc=strlen(cuv)-1;
          int poz=1;
          for (int i=0;i<lgc;i++)
             {
                   cuv[i]-='a';
                   if (t[poz][cuv[i]]) poz=t[poz][cuv[i]];
                   else {
                            t[poz][cuv[i]]=++nr;
                            poz=nr;                        
                        }
             }
    }
    
    int sol=0,poz,k,l;
    for (int i=0;i+lgc<=lgs;i++)
        {
             poz=1,k=i,l=0;
             while (poz!=0 && l<lgc)
                   {
                           poz=t[poz][s[k]];
                           l++, k++;
                   }
             if (poz!=0) sol++;             
        }
        
    printf("%d\n",sol);
    
    return 0;
}