Cod sursa(job #101623)

Utilizator fireatmyselfBogdan-Alexandru Stoica fireatmyself Data 13 noiembrie 2007 17:42:30
Problema Abc2 Scor 0
Compilator c Status done
Runda Happy Coding 2007 Marime 1.1 kb
#include <stdio.h>
#define S ((1<<23)-1)

int V[S+10], Nr;
char ss[10000002], ss2[50002];

int main()
{
        int i, j, hash, l, n;

        freopen("abc2.in", "r", stdin);
        gets(ss);
        n = strlen(ss);
        scanf(" ");
        gets(ss2);
        l = strlen(ss2);
        n -= l;

        for (i = 0; i < n; i++)
        {
            hash = 65599;
            for (j  = 0; j < l; j++)
                hash = ((int)ss[i+j]+(hash<<6)+(hash<<16)-hash)&S;
            V[hash]++;
        }

        hash = 65599;
        for (j = 0; j < l; j++)
            hash = (ss2[j]+(hash<<6)+(hash<<16)-hash)&S;
        Nr += (V[hash]>0);
        V[hash] = 0;

        for (i = 0; i < 50000; i++)
        {
                scanf(" ");
                gets(ss2);
                hash = 65599;
                for (j = 0; j < l; j++)
                    hash = (ss2[j]+(hash<<6)+(hash<<16)-hash)&S;
                Nr += (V[hash]>0);
                V[hash] = 0;
        }

        freopen("abc2.out", "w", stdout);
        printf("%d\n", Nr);

        return 0;
        
}