Cod sursa(job #1492578)

Utilizator GinguIonutGinguIonut GinguIonut Data 27 septembrie 2015 21:28:43
Problema Abc2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <cstdio>
#define cMax 10000001
#define cuvMax 22
#include <string.h>
#define CH *s-'a'
using namespace std;
char line[cMax], cuv[cuvMax];
int i, m;
long long sol;
struct Trie
{
    int cnt;
    Trie *fii[3];
    Trie()
    {
        cnt=0;
        memset(fii, 0, sizeof(fii));
    }
};
Trie *T=new Trie;
void ins(Trie *node, char *s)
{
    if(*s=='\n')
    {
        node->cnt=1;
        return;
    }
    if(node->fii[CH]==0)
        node->fii[CH]=new Trie;
    ins(node->fii[CH], s+1);
}
void que(Trie *node, char *s)
{
    sol+=node->cnt;
    if(*s=='\n')
        return;
    if(node->fii[CH])
        que(node->fii[CH], s+1);
}
int main()
{
    freopen("abc2.in", "r", stdin);
    freopen("abc2.out", "w", stdout);
    fgets(line, cMax, stdin);
    fgets(cuv, cuvMax, stdin);
    while(!feof(stdin))
    {
        ins(T, cuv);
        fgets(cuv, cuvMax, stdin);
    }
    m=strlen(line);
    for(i=0;i<m;i++)
        que(T, line+i);
    printf("%d", sol);
    return 0;
}