Cod sursa(job #1831885)

Utilizator gorneanu.andreiFMI Gorneanu Andrei gorneanu.andrei Data 18 decembrie 2016 22:48:20
Problema Abc2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <iostream>
#include <fstream>
#include <bits/stdc++.h>
#include <string.h>
#define MAXT 10000009
#define MAXC 25
#define MOD 500000
using namespace std;
char sir[MAXT];
vector<int> v[MOD];

int hashFunc(char cuv[MAXC]){

    int a = 7, i, len;
    int h = 0;
    len = strlen(cuv);

    for(i = 1;i < len; ++i){
        h = h + cuv[i] * a;
        a = a * a;
    }

    return h;
}

int main(){

    char cuv[MAXC],aux[MAXC];
    fstream f("abc2.in",ios::in);
    fstream g("abc2.out",ios::out);
    f.getline(sir,MAXT,'\n');
    int i, len, total = 0, l, m, y, x, j;

    f.getline(cuv,MAXC,'\n');
    x = hashFunc(cuv);
    v[x % MOD].push_back(x);
    l = strlen(cuv);
    while(!f.eof()){
        f.getline(cuv,MAXC,'\n');
        x = hashFunc(cuv);
        v[x % MOD].push_back(x);
    }

    len = strlen(sir);
    for(i = 0;i <= len - l; ++i){
        strcpy(aux,"");
        strncpy(aux,sir + i,l);
        aux[l] = '\0';
        x = hashFunc(aux);
        m = v[x % MOD].size();
        y = x % MOD;
        for(j = 0;j < m; ++j)
            if(v[y][j] == x){
                ++total;
                j = m + 10;
            }
    }

    g << total;

}