Cod sursa(job #1571803)

Utilizator penetavyPene Cosmin-Octavian penetavy Data 18 ianuarie 2016 15:25:41
Problema Potrivirea sirurilor Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <stdio.h>
#include <string.h>

using namespace std;

FILE *fin = fopen("strmatch.in", "r");
FILE *fout = fopen("strmatch.out", "w");

char s[2000001],s2[2000001], c;
int v[2000000];

int main(){
    int i, j, l, L, prim = 1, p = 0;
    long long hs = 0, hs2 = 0;
    fscanf(fin, "%s", s);
    fscanf(fin, "%c", &c);
    l = strlen(s);
    for(i = 0; i < l; i++){
        hs = hs + (prim * s[i]);
        prim *= 101;
    }
    fscanf(fin, "%s", s2);
    L = strlen(s2) - l + 1;

    for(i = 0; i < L; i++){
        hs2 = 0;
        prim = 1;
        for(j = 0; j < l; j++){
            hs2 = hs2 + (prim * s2[i + j]);
            prim *= 101;
        }
        printf("%d ", hs2);
        if(hs == hs2){
            v[p++] = i;
        }
    }

    fprintf(fout, "%d\n", p);
    for(i = 0; i < p; i++)
        fprintf(fout, "%d ", v[i]);

    return 0;
}