Cod sursa(job #1487999)

Utilizator iulianrotaruRotaru Gheorghe-Iulian iulianrotaru Data 17 septembrie 2015 19:19:49
Problema Abc2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <fstream>
#include <vector>
#include <cstring>
using namespace std;
ifstream f("abc2.in");
ofstream g("abc2.out");
int nr,i,l,n,j;
unsigned int a,q[23];
char w[10000012],c[24];
vector <unsigned int> M[202];
bool caut(unsigned int jeg)
{
    int r=jeg%20,z=M[jeg%20].size();
    for(j=0;j<z;++j)
        if(M[r][j]==jeg) return 1;
    return 0;
}
int main()
{
    f>>(w+1);
    l=strlen(w+1);
    q[1]=1;
    for(i=2;i<=20;++i) q[i]=q[i-1]*3;
    while(f>>(c+1))
    {
        n=strlen(c+1);
        for(i=1,a=0;i<=n;++i) a=a+q[i]*(c[i]-97);
        if(!caut(a)) M[a%20].push_back(a);
    }
    for(i=1,a=0;i<=n;++i) a=a+q[i]*(w[i]-97);
    nr+=caut(a);
    for(i=n+1;i<=l;++i) {a/=3; a=a+q[n]*(w[i]-97); nr+=caut(a);}
    g<<nr;
    return 0;
}