Cod sursa(job #1712441)

Utilizator medicinedoctoralexandru medicinedoctor Data 2 iunie 2016 21:12:12
Problema Potrivirea sirurilor Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>
#include <string>

using namespace std;

string a,b;
int q,i,x[2000000];

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

void ecrire()
{
     ofstream f("strmatch.out");
     f << q << endl;
     if (q>1000) q=1000;
     for (int i=1; i<=q; i++)
         f << x[i] << ' ' ;
     f.close();
}

bool verifica(int x)
{
     bool q=true;
     int i=2;
     while (i<a.length())
     {
           if ((x+i-1<=b.length()) && (a[i-1]!=b[x+i-2])) { q=false; break; }
           i++;
     }
     return q;
}

int main()
{
    lire();
    q=0;
    for (int i=1; i<=b.length(); i++)
        if ((i-2+a.length()<=b.length()) && (a[0]==b[i-1]) && (a[a.length()-1]==b[i-2+a.length()]) && verifica(i) ) { q++; x[q]=i-1; }
    ecrire();
}