Cod sursa(job #609661)

Utilizator alinhAlin H alinh Data 22 august 2011 18:26:43
Problema Potrivirea sirurilor Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <fstream>
#include <cstring>
#include <vector>

using namespace std;

#define MAX 2000001

ifstream fi;
ofstream fo;

char a[MAX];
char b[MAX];

int lena;
int lenb;

int k;

vector<int> sol;

int main()
{
    // citire
    fi.open("strmatch.in");
    fi >> a;
    fi >> b;
    fi.close();
    lena = strlen(a) - 1;
    lenb = strlen(b) - 1;
    k = 0;

    // parcurgere
    for (int i = 0; i <= lenb - lena + 1; i++)
    {
        for (int j = 0; j <= lena; j++)
        {
            if (b[i + j - 1] != a[j])
                break;
            if (j == lena)
            {
                ++k;
                sol.push_back(i);
            }
        }
    }

    // tiparire
    fo.open("strmatch.out");
    fo << k << "\n";
    vector<int>::iterator it;
    for (it = sol.begin(); it != sol.end(); ++it)
        fo << *it - 1 << " ";
    fo.close();
    return 0;
}