Cod sursa(job #2745857)

Utilizator mafiotxrobeert mafiotx Data 27 aprilie 2021 02:46:40
Problema Potrivirea sirurilor Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.05 kb
#include <iostream> 
#include <fstream>
#include <iomanip>
#include <cmath>
#include <algorithm> 
#include <cstring>

using namespace std;

string NumeFisier = "strmatch";

ifstream fin(NumeFisier + ".in");
ofstream fout(NumeFisier + ".out");

typedef unsigned long long int ull;


	char sirA[2000001];
	char sirB[2000001];

int main()
{
	fin.getline(sirA, 2000001);
	fin.getline(sirB, 2000001);



	int lenA = strlen(sirA);
	int lenB = strlen(sirB);

	int nrMatches = 0;
	int v[1001];

	if (lenA > lenB)
	{
		fout << 0;
		return 0;
	}

	if (lenA == lenB)
	{
		if (strcmp(sirA, sirB) != 0)
			fout << 0;
		return 0;
	}

	for (int i = 0; i <= lenB - lenA; i++)
	{
		if (sirB[i] == sirA[0])
		{
			bool ok = 1;
			for (int j = 0; j < lenA && ok; j++)
				if (sirA[j] != sirB[i + j])
					ok = 0;

			if (ok && nrMatches < 1000)
			{
				v[nrMatches] = i;
				nrMatches++;
			}
			else if (nrMatches >= 1000)
				break;
		}
	}
	fout << nrMatches << '\n';
	for (int i = 0; i < nrMatches; i++)
		fout << v[i] << ' ';
}