Cod sursa(job #1435419)

Utilizator vendettaSalajan Razvan vendetta Data 13 mai 2015 01:42:07
Problema Potrivirea sirurilor Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.15 kb
#include <iostream>
#include <fstream>

using namespace std;

const int NMAX = 2e6 + 2;

ifstream f("strmatch.in");
ofstream g("strmatch.out");

string text, pattern;
//int mars[NMAX];
int ans[NMAX];
int main(){
    //f >> text >> pattern;
    f >> pattern >> text;
    int maxLength = pattern.size();
    for(int i=0; i<text.size(); ++i){
        int startPos = i;
        int endPos = i + pattern.size() - 1;
        if (endPos >= text.size()) break;
        int stanga = 0; int dreapta = 0;
        for(int j=startPos, j2=0; j<=startPos + maxLength-1; ++j, ++j2){
            if (text[j] != pattern[j2]) break;
            ++stanga;
        }/*
        for(int j=endPos, j2=pattern.size()-1; j>=endPos-maxLength+1; --j, --j2){
            if(text[j] != pattern[j2]) break;
            ++dreapta;
        }
        int minLength = min(stanga, dreapta);
        if (minLength > 0){
            mars[1]++;
            mars[minLength+1]--;
        }*/
        if (stanga == pattern.size()) ans[++ans[0]] = i;
    }
    g << ans[0] << "\n";
    for(int i=1; i<=min(ans[0], 1000); ++i){
        g << ans[i] << " ";
    }

    return 0;
}