Cod sursa(job #1593648)

Utilizator razvandRazvan Dumitru razvand Data 8 februarie 2016 19:35:06
Problema Potrivirea sirurilor Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
#include <iostream>
#include <fstream>
#include <string.h>

using namespace std;

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

char s1[2000003];
char s2[2000003];
int val[2000003];
char *p1 = s1;
char *p2 = s2;
int cnt;

int main() {

    in.getline(s1, 2000003);
    in.getline(s2, 2000003);

    int l1 = strlen(s1);
    int l2 = strlen(s2);

    int mid = l1/2;

    while(*p2 != '\n' && *p2 != '\0') {
        if(*p2 == *p1 && *(p2+l1-1) == *(p1+l1-1) && *(p2+mid-1) == *(p1+mid-1)) {
            bool eq = true;
            while(*p1 != '\n' && *p1 != '\0') {
                if(*p1 != *p2) {
                    eq = false;
                    break;
                }
                p1++;
                p2++;
            }
            p2 -= p1-s1;
            if(eq)
                val[cnt++] = p2 - s2;
            p1 = s1;
        }
        p2++;
    }

    out << cnt << '\n';
    for(int i = 0; i < cnt; i++) {
        if(i == 1000)
            break;
        out << val[i] << " ";
    }

    return 0;
}