Cod sursa(job #1154186)
| Utilizator | Data | 26 martie 2014 00:21:50 | |
|---|---|---|---|
| Problema | Potrivirea sirurilor | Scor | 40 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.59 kb |
#include<fstream>
#include<string>
#include<vector>
using namespace std;
ifstream in("strmatch.in");
ofstream out("strmatch.out");
int main()
{
string m,n;
vector<int> b;
in>>m>>n;
int i=0,I=1,M=m.length(),N=n.length();
while(m.at(0)!=m.at(I)) I++;
while(i<N-M+1)
{
if(n.substr(i,I)==m.substr(0,I))
{
if(n.substr(i,M)==m) b.push_back(i);
i+=I;
}
else i++;
while(i<N-M+1&&n.at(i)!=m.at(0)) i++;
}
out<<b.size()<<'\n';
for(i=0;i<b.size()&&i<1000;i++) out<<b.at(i)<<" ";
}