Cod sursa(job #278213)

Utilizator deltaDumitrache Mircea delta Data 12 martie 2009 10:12:30
Problema Potrivirea sirurilor Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.09 kb
#include <fstream>
#include <string>
#define MAX 2000001
using namespace std;

int n, m;
char a[MAX];
char b[MAX];
int p[MAX];
void Read();
void Solve();

ifstream fin("strmatch.in");
ofstream fout("strmatch.out");

int main()
{
    Read();
    Solve();

    fin.close();
    fout.close();
    return 0;
}

void Read()
{
    fin >> a;
    fin >> b;
    n = strlen(b);
    m = strlen(a);
   // fout << a << "\n" << b << " " << n << " " << m << "\n";
}

void Solve()
{
    int cont = 0;
    for (int i = 0; i < n-m+1; i++)
    {
      //  fout << a[i] << b[0] << "\n";
        if (b[i] == a[0])
        {
            
            int ok = 1;
        	for (int j = 1; j < m && ok; j++)
        	{
        	    if (b[i+j] != a[j])
        	    	ok = 0;
   	        }
            if (ok == 1)
            {
                cont++;
                p[i] = 1;
            }
        }
    }
    
    fout << cont << "\n";
    for (int i = 0; i<= n-m+1; i++)
    {
        if (p[i] == 1) fout << i << " ";
    }
}