Cod sursa(job #2480879)

Utilizator VeliceaFabianPavelVelicea Fabian Pavel VeliceaFabianPavel Data 26 octombrie 2019 10:50:48
Problema Potrivirea sirurilor Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include<iostream>
#include<fstream>
#include <string>
#include<vector>
using namespace std;
ifstream fin("strmatch.in");
ofstream fout("strmach.out");
string A,B;
int poz=1,ind;
int vect[2000003];
vector<int> ans;
int main()
{
    fin>>A>>B;
    while(poz<A.size()){
        if(A[poz]==A[ind])
            vect[poz++]=++ind;
        else {
            if(ind)ind=vect[ind-1];
            else vect[poz++]=0;
        }
    }
    poz=0;
    while(poz<B.size()){
        if(A[ind]==B[poz])poz++,ind++;
        if(ind==A.size()){
            ans.push_back(poz-ind);
            ind=vect[ind-1];
        }
            else if(poz<B.size()&&A[ind]!=B[poz]){

                if(ind)ind=vect[ind-1];
                else poz++;
            }
        }
        fout<<ans.size()<<'\n';
        for(int poz=0;poz<min((int)ans.size(),1000);poz++)
            fout<<ans[poz]<<" ";
    return 0;
}