Cod sursa(job #340502)

Utilizator gh09chisinau gheorghita gh09 Data 14 august 2009 23:19:38
Problema Nums Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.41 kb
# include <cstdio>
# include <string>

using namespace std;

# define FIN "nums.in"
# define FOUT "nums.out"
# define MAXN 100005
# define Sigma 10

struct Trie
{
       int Cnt, OK;
       Trie *Fiu[Sigma];
       
       Trie()
       {
           Cnt = OK = 0;
           
           memset(Fiu, 0, sizeof(Fiu));
       }
} *Num;

char s[MAXN];
int N, M, i, j, L, ct, cc, li;

    void Add( Trie *Numar, int ind)
    {   
        int i;
        Trie *p;
        
        p = Numar;
        for (i = 3; i <= L; ++i)
        {
            if (p -> Fiu[s[i] - '0'] == NULL) p -> Fiu[s[i] - '0'] = new Trie;
            
            p = p -> Fiu[s[i] - '0'];
        }
        
        if (!p -> OK)
        {
            p -> OK = 1;
               
            p = Numar;
            for (i = 3; i < L; ++i)
            {
                p = p -> Fiu[s[i] - '0'];
                ++p -> Cnt;
            }
        }
    }
    
    void Init()
    {
        //for (i = 0; i <= 100000; ++i) Num[i] = new Trie;
    }
    
    int main()
    {
        freopen(FIN, "r", stdin);
        freopen(FOUT, "w", stdout);
        
        scanf("%d\n", &N);
        
        Init();
        
        for (i = 1; i <= N; ++i)
        {
            gets(s + 1); L = strlen(s + 1);
            
            if (s[1] == '1') Add(Num, i);
        }
        
        return 0;
    }