Pagini recente » Cod sursa (job #969594) | Cod sursa (job #259176) | Cod sursa (job #48796) | Cod sursa (job #2440205) | Cod sursa (job #882973)
Cod sursa(job #882973)
#include <fstream>
#include <string.h>
#include <iostream>
using namespace std;
ifstream f1("trie.in");
ofstream f2("trie.out");
char a[10005][35];
int N=0,LEN[10005];
char L[35];
void adauga(char l[35])
{
// cout<<l<<endl;
int i,j,len,c;
len=strlen(l);
N++;
LEN[N]=len-2;
j=1;
for (c=2;c<=len;c++)
a[N][j++]=l[c];
}
void sterge(char l[35])
{
// cout<<l<<endl;
int i,j,len;
len=strlen(l);
int ok;
for (i=1;i<=N;i++)
if (LEN[i]==(len-2))
{
ok=1;
for (j=1;j<=LEN[i];j++)
if (a[i][j]!=l[j+1])
ok=0,j=LEN[i]+1;
if (ok==1)
LEN[i]=0,i=N+1;
}
}
void aparitii(char l[35])
{
// cout<<l<<endl;
int i,j,len,nr=0;
len=strlen(l);
int ok;
for (i=1;i<=N;i++)
if (LEN[i]==(len-2))
{
ok=1;
for (j=1;j<=LEN[i];j++)
if (a[i][j]!=l[j+1])
ok=0,j=LEN[i]+1;
if (ok==1)
nr++;
}
f2<<nr<<'\n';
}
void prefix(char l[35])
{
int i,j,len,max=0,nr;
len=strlen(l);
for (i=1;i<=N;i++)
{
nr=0;
for (j=1;j<=LEN[i];j++)
if (a[i][j]!=l[j+1])
j=LEN[i]+1;
else
nr++;
if (nr>max)
max=nr;
}
f2<<max<<'\n';
}
int main()
{
while (!f1.eof())
{
f1.getline(L,35);
if (L[0]=='0')
adauga(L);
if (L[0]=='1')
sterge(L);
if (L[0]=='2')
aparitii(L);
if (L[0]=='3')
prefix(L);
//afislista();
}
//afislista();
f1.close();
f2.close();
return 0;
}