Cod sursa(job #2675021)

Utilizator ioana0211Ioana Popa ioana0211 Data 21 noiembrie 2020 09:20:37
Problema Potrivirea sirurilor Scor 38
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.16 kb
#include <iostream>
#include <fstream>
#include <string.h>

using namespace std;

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

#define MAXLENGTH 2000001

/* Variable Declarations */
char text[MAXLENGTH], pattern[MAXLENGTH];
int t, p;
int n, result[MAXLENGTH];

/// Part b. Ignore for now
int lps[MAXLENGTH];


void calculateLPSArray() {

}

void printLPSArray() {
    for (int i=0; i<p; i++) {
        fout<<lps[i]<<" ";
    }
    fout<<endl;
}

void findPatternMatches() {
    for(int i=0; i<t-p; i++)
    {
        if(text[i]==pattern[0])
        {
            bool apar=1;
            for(int j=0; j<p; j++)
                if(text[i+j]!=pattern[j])
                    apar=0;
            if(apar)
                result[n++]=i;
        }
    }
}

void printResult() {
    fout<<n<<"\n";
    if (n > 1000) {
        n = 1000;
    }

    for (int i=0; i<n; i++) {
        fout<<result[i]<<" ";
    }
}

int main()
{
    fin.getline(pattern, MAXLENGTH);
    fin.getline(text, MAXLENGTH);
    p = strlen(pattern);
    t = strlen(text);

    findPatternMatches();
    printResult();

    return 0;
}