Pagini recente » Borderou de evaluare (job #2857668) | Cod sursa (job #340502)
Cod sursa(job #340502)
# 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;
}