Pagini recente » Cod sursa (job #783711) | Cod sursa (job #2123853) | Cod sursa (job #1011169) | Cod sursa (job #829697) | Cod sursa (job #2043286)
#include <cstdio>
#include <vector>
#include <algorithm>
#include <cstring>
using namespace std;
const int NMAX=220005;
const int M=666013;
struct WORD
{
char a[15],b[15];
};
vector <WORD> TA[M+5];
char s[NMAX];
int h(char *s)
{
int a=0,base=128;
for( ;*s;++s)
a=(a*base+(*s))%M;
return a;
}
int main()
{
freopen("dictionar.in","r",stdin);
freopen("dictionar.out","w",stdout);
int n,i,add,ns,nc,j;
WORD temp;
char c1[15],c2[15];
gets(s);
scanf("%d\n",&n);
for(i=1;i<=n;++i)
{
scanf("%s %s\n",&c1,&c2);
add=h(c1);
strcpy(temp.a,c1);
strcpy(temp.b,c2);
TA[add].push_back(temp);
}
int nsp=0;
ns=strlen(s);
for(i=0;i<ns;++i)
if(s[i]==' ')
nsp++;
printf("%d\n",nsp+1);
nc=0;
for(i=0;i<ns-1;++i)
{
if(s[i]==' ')
{
c1[nc]=NULL;
add=h(c1);
for(j=0;j<TA[add].size();++j)
{
if(strcmp(TA[add][j].a,c1)==0)
{
printf("%s ",TA[add][j].b);
break;
}
}
nc=0;
}
else
{
c1[nc]=s[i];
nc++;
}
}
c1[nc]=NULL;
add=h(c1);
for(j=0;j<TA[add].size();++j)
{
if(strcmp(TA[add][j].a,c1)==0)
{
printf("%s.",TA[add][j].b);
break;
}
}
return 0;
}