Cod sursa(job #1798282)

Utilizator mihai.alphamihai craciun mihai.alpha Data 5 noiembrie 2016 08:58:07
Problema Potrivirea sirurilor Scor 32
Compilator cpp Status done
Runda Arhiva educationala Marime 1.31 kb
#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;
}