Mai intai trebuie sa te autentifici.

Cod sursa(job #1837019)

Utilizator d0rina2011Craciun Dorina d0rina2011 Data 28 decembrie 2016 22:32:12
Problema Abc2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <iostream>
#include<bits/stdc++.h>
#include <cstdio>
#include <cstring>
#include <vector>
#define M 666013

using namespace std;

FILE *f = fopen("abc2.in", "r");
FILE *g = fopen("abc2.out", "w");

vector <int> h[M + 1];
char s[10000001], cuv[50001];
int v[25];//puterile lui 3

int caut(int x){
    int y = x % M, i;
    for(i = 0; i < h[y].size(); ++i){
        if(h[y][i] == x) return 1;
    }
    return 0;
}

int main()
{
    int n, n1, aux, i, nr = 0;
    fgets(s, 10000000, f);
    n = strlen(s);
    v[0] = 1;
    for(i = 1; i <= 19; i++)
        v[i] = v[i - 1] * 3;
    while(fgets(cuv, 50000, f)){
        n1 = strlen(cuv);
        aux = 0;
        for(i = 0; i < n1; ++i){
            aux += v[i] * (cuv[i] - 'a');
        }
        aux %= M;
        h[aux].push_back(aux);
    }
    aux = 0;
    for(i = 0; i < n1; ++i){
        aux += v[i] * (cuv[i] - 'a');
    }
    nr += caut(aux);
    for(i = 1; i < n1; i++){
        aux /= 3;
        aux += v[i-1] * (s[i] - 'a');
        nr += caut(aux);
    }
    fprintf(g, "%d", nr);
    return 0;
}