Pagini recente » Cod sursa (job #400673) | Cod sursa (job #3240240) | Cod sursa (job #2294561) | Cod sursa (job #1799926) | Cod sursa (job #1798282)
#include <bits/stdc++.h>
using namespace std;
//const int NRMAX = 2000003;
//int k, nrsol, p[NRMAX];
//char a[NRMAX], b[NRMAX];
ifstream fin("strmatch.in");
ofstream g("strmatch.out");
//vector <int> rez;
//vector <int>::iterator it;
string a;
string b;
vector <int>v;
int main() {
fin >> a;
fin >> b;
int m, n;
m = a.size();
n = b.size();
int rez;
int nr = 0;
std::size_t found = b.find(a);
while(found != string::npos) {
rez = found + nr;
v.push_back(rez);
nr++;
b.erase(found, 1);
found = b.find(a);
}
g << nr << "\n";
vector<int>::iterator it;
for(it = v.begin(); it != v.end();it++)
g<<*it<<" ";
// int m, n;
// fin>>a+1;
// fin>>b+1;
// m = strlen(a+1);
// n = strlen(b+1);
// int i;
// for(i = 2;i <= m;i++) {
// while(a[i] != a[k + 1] && k)
// k = p[k];
// if(a[i] == a[k+1])
// k++;
// p[i] = k;
// }
// k = 0;
// for(i = 1;i <= n;i++) {
// while(b[i] != a[k + 1] && k)
// k = p[k];
// if(b[i] == a[k+1])
// k++;
// if(k == m)
// nrsol++;
// if(nrsol <= 1000 && k == m)
// rez.push_back(i - m);
// }
// g << nrsol << "\n";
// for(it = rez.begin();it < rez.end();it++)
// g << *it << " ";
fin.close();
g.close();
return 0;
}