Cod sursa(job #580775)

Utilizator varuvasiTofan Vasile varuvasi Data 13 aprilie 2011 14:31:20
Problema Potrivirea sirurilor Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <stdio.h>
#include <string.h>
#define maxn 2000022

char A[maxn], B[maxn];
int pi[maxn], pos[1033];
int matches;

void match()
{
    int lena = strlen(A), lenb = strlen(B);
    int i = 0, j = 0;
    for (i = 0; i <= lenb - lena; i++)
    {
        j = 0;
        while (j < lena && A[j] == B[i+j])
            j++;
        printf("%d %d %d\n", lena, j, matches);
        if (j == lena)
            if (matches > 1000)
                matches++;
            else
                pos[matches++] = i;
    }
}

int main()
{
    FILE *fin = fopen("strmatch.in", "rt");
    FILE *fout = fopen("strmatch.out", "wt");
    int i = 0;

    fscanf(fin, "%s\n%s", A, B);
    match();
    fprintf(fout, "%d\n", matches);
    for (i = 0; i < ((matches > 1000) ? 1000 : matches); i++)
        fprintf(fout, "%d ", pos[i]);

    fclose(fin), fclose(fout);

    return 0;
}