Cod sursa(job #2861419)

Utilizator anghelmrsmanghel eduard anghelmrsm Data 3 martie 2022 22:22:45
Problema Potrivirea sirurilor Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>
#include <string>
#include <vector>

using namespace std;

ifstream cin("strmatch.in");
ofstream cout("strmatch.out");

#define mod 1009
string s,x;
int sx,ss;
vector <int> v;
int main()
{
    cin>>x;
    cin>>s;
    bool ok=true;
    for (int i=0; i<x.size(); i++)
    {
        sx=(sx+x[i])%mod;
        ss=(ss+s[i])%mod;
        if (s[i]!=x[i])
            ok=false;
    }
    if (ok==true)
        v.push_back(0);
    for (int i=1; i<=s.size()-x.size(); i++)
    {
        ss=(ss-s[i-1]%mod+s[i+x.size()]%mod)%mod;
        if (ss==sx)
        {
            ok=true;
            for (int j=0; j<x.size(); j++)
                if (x[j]!=s[i+j])
                {
                    ok=false;
                    break;
                }
            if (ok)
                v.push_back(i);
        }
    }
    cout<<v.size()<<'\n';
    for (auto i : v)
        cout<<i<<" ";
}