Pagini recente » Cod sursa (job #2685873) | Cod sursa (job #1997231) | Cod sursa (job #272485) | Cod sursa (job #1175092) | Cod sursa (job #2976487)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("strmatch.in");
ofstream fout("strmatch.out");
const int b = 256;
const int MOD = INT_MAX;
string p , t;
vector <int> poz;
int main(){
fin >> p >> t;
int n = t.size();
int m = p.size();
int hashp = 0 , hasht = 0 , h = 1;
for(int i = 0 ; i < m - 1 ; i++){
h = ( h * b )%MOD;
}
for(int i = 0 ; i < m ; i++){
hashp = ((hashp*b)%MOD + p[i])%MOD;
hasht = ((hasht*b)%MOD + t[i])%MOD;
}
if(hashp == hasht) poz.push_back(0);
for(int i = 1 ; ( i + m - 1 ) < n ; i++){
hasht = (((hasht - (t[i-1]*h)%MOD) * b)%MOD + t[( i + m - 1 )])%MOD;
if(hasht == hashp) poz.push_back(i);
}
fout << poz.size()<< '\n';
for( auto it : poz ){
fout << it << ' ';
}
return 0;
}