Pagini recente » Cod sursa (job #2695897) | Cod sursa (job #1102181) | Cod sursa (job #1902159) | Cod sursa (job #2067882) | Cod sursa (job #2745857)
#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] << ' ';
}