Cod sursa(job #2222391)

Utilizator icansmileSmileSmile icansmile Data 16 iulie 2018 22:33:18
Problema Potrivirea sirurilor Scor 14
Compilator cpp Status done
Runda Arhiva educationala Marime 1.09 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <cstdlib>
#include <queue>

using namespace std;

int min(int a, int b) {
    return a < b ? a : b;
}

int main() {
    std::string first;
    std::string second;

    ifstream input("strmatch.in");
    ofstream output("strmatch.out");

    input >> second;
    input >> first;

    int index_first = 0;
    int index_second = 0;
    vector<int> aparitionsIndices;

    while (index_first != first.size() - 1) {
        if (first[index_first] == second[index_second]) {
            index_second++;
        } else {
            index_second = 0;
        }

        if (index_second == second.size()) {
            aparitionsIndices.push_back(index_first);
            index_second = 0;
            if (first[index_first] == second[index_second])
                index_second++;
        }

        index_first++;
    }

    output << aparitionsIndices.size() << endl;
    for (int i = 0; i < min(aparitionsIndices.size(), 1000); i++)
        output << aparitionsIndices[i] - second.size() + 1 << " ";

    input.close();
    output.close();

    return 0;
}