Pagini recente » Cod sursa (job #1825827) | Cod sursa (job #333362) | Cod sursa (job #684456) | Cod sursa (job #247210) | Cod sursa (job #1435419)
#include <iostream>
#include <fstream>
using namespace std;
const int NMAX = 2e6 + 2;
ifstream f("strmatch.in");
ofstream g("strmatch.out");
string text, pattern;
//int mars[NMAX];
int ans[NMAX];
int main(){
//f >> text >> pattern;
f >> pattern >> text;
int maxLength = pattern.size();
for(int i=0; i<text.size(); ++i){
int startPos = i;
int endPos = i + pattern.size() - 1;
if (endPos >= text.size()) break;
int stanga = 0; int dreapta = 0;
for(int j=startPos, j2=0; j<=startPos + maxLength-1; ++j, ++j2){
if (text[j] != pattern[j2]) break;
++stanga;
}/*
for(int j=endPos, j2=pattern.size()-1; j>=endPos-maxLength+1; --j, --j2){
if(text[j] != pattern[j2]) break;
++dreapta;
}
int minLength = min(stanga, dreapta);
if (minLength > 0){
mars[1]++;
mars[minLength+1]--;
}*/
if (stanga == pattern.size()) ans[++ans[0]] = i;
}
g << ans[0] << "\n";
for(int i=1; i<=min(ans[0], 1000); ++i){
g << ans[i] << " ";
}
return 0;
}