Cod sursa(job #2402616)

Utilizator WladDalwMvladutu cristian vlad WladDalwM Data 10 aprilie 2019 20:50:48
Problema Potrivirea sirurilor Scor 14
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <fstream>

using namespace std;
ifstream cin("strmatch.in");
ofstream cout("strmatch.out");
int rez[2000001];
int main()
{

    long long a = 0 , mod = 999999999999989 , i;
    long long b = 0 , cif = 0 , cnt = 0 , p10 = 1 , poz = 1;
    char  k;
    cin.get(k);
    while(k != '\n')
    {
        a += (k - 'A' + 1);
        a *= 27;
        a = a % mod;
        cif++;
        p10 *= 27;
        cin.get(k);

    }
    a /= 27;
    p10 /= 27;
    while(cin.get(k) && cif)
    {
        cif--;
        b += (k - 'A' + 1);
        b *= 27;
        b %= mod;
    }
    b/= 27;
    if(b == a)
    {cnt++;
    rez[cnt] = poz;}
    while(cin.get(k))
    {
        poz++;
        b %= p10;
        b *= 27;
        b += k - 'A' + 1;
        if(a == b)
        {cnt++;
        rez[cnt] = poz;}
    }
    cout << cnt << '\n';
    for(i = 1; i <= cnt; i++)
    cout << rez[i] << " ";
    return 0;
}