Cod sursa(job #2605212)

Utilizator michael_blazemihai mihai michael_blaze Data 24 aprilie 2020 16:55:46
Problema Potrivirea sirurilor Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#include <stdio.h>
#include <malloc.h>
#include <cstring>

using namespace std;


int check(const char* t, const char* b, int n) {
	for (int i = 0;i < n;i ++)
        if (t[i] != b[i])
            return 0;
	return 1;
}

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

	int counter = 0;
	char* A = (char*) malloc(2000000);
	char* B = (char*) malloc(2000000);
	char* temp = (char*) malloc(2000000);
    int v[1000];
    int k = 0;
	fscanf(fin ,"%s", A);
	fscanf(fin ,"%s", B);

	int len1 = strlen(A);
	int len2 = strlen(B);

	for (int i = 0;i <= len2 - len1;i ++) {

		for (int k = i;k <= len1 + i - 1;k ++)
			temp[k - i] = B[k];


		if (check(temp, A, len1)) {
			counter ++;
			if (k < 1000)
                v[k ++] = i;
		}
	}

	fprintf(fout, "%d\n", counter);

    for (int i = 0;i < k;i ++)
        fprintf(fout, "%d ",v[i]);

    free(A);
    free(B);
    free(temp);
    fclose(fin);
    fclose(fout);
	return 0;
}