Cod sursa(job #1903143)

Utilizator medicinedoctoralexandru medicinedoctor Data 4 martie 2017 23:50:38
Problema Potrivirea sirurilor Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include <fstream>
#include <string>
#include <vector>

using namespace std;

vector <int> x;
string a, b;
int i, q;

void read()
{
     ifstream f("strmatch.in");
     f >> a >> b;
     f.close();
}

void write()
{
     ofstream f("strmatch.out");
     f << q << '\n';
     q = min(q, 1000);
     for (int i = 0; i < q; i++)
         f << x[i] << ' ';
     f.close();
}

bool verifica(int x)
{
     for (int i = 1; x+i-1 <= b.size() && i < a.size(); i++)
           if (a[i-1] != b[x+i-1]) return false;
     return true;
}

int main()
{
    read();

    for (i = 0; i + a.size() <= b.size() && i < b.size() && x.size() < 1000; i++)
        if (a[0] == b[i] && a[a.size() -1] == b[i - 1 + a.size()] && verifica(i))
            x.push_back(i);

    q = x.size();
    for (i; i + a.size() <= b.size() && i < b.size(); i++)
        if (a[0] == b[i] && a[a.size() -1] == b[i - 1 + a.size()] && verifica(i))
            q++;

    write();

    return 0;
}