Cod sursa(job #672175)

Utilizator ukiandreaAndreea Lucau ukiandrea Data 1 februarie 2012 18:18:02
Problema Potrivirea sirurilor Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <stdio.h>
#include <string.h>

#include <vector>

char a[2000001];
char b[2000001];

void find_match_hard()
{
    std::vector<int> apps;

    if (strlen(b) < strlen(a)) {
        printf("0\n");
        return;
    }

    for (unsigned int i = 0; i <= (strlen(b) - strlen(a)); i++) {
        if (memcmp(&b[i], a, strlen(a)) == 0) {
            apps.push_back(i);
        }
    }

    printf("%d\n", apps.size());
    for (std::vector<int>::iterator it = apps.begin(); it != apps.end(); ++it)
        printf("%d ", *it);

    printf("\n");
}

int main()
{
    freopen("strmatch.in", "r", stdin);
    freopen("strmatch.out", "w", stdout);

    memset(a, 0, sizeof(a));
    memset(b, 0, sizeof(b));

    scanf("%s\n", a);
    scanf("%s\n", b);

    find_match_hard();

    return 0;
}