Pagini recente » Cod sursa (job #793347) | Cod sursa (job #1235614) | Cod sursa (job #1825148) | Cod sursa (job #2396278) | Cod sursa (job #2488279)
// PotrivireaSirurilor.cpp : Defines the entry point for the console application.
//
//#include "stdafx.h"
#include <fstream>
#include <string>
#include <iostream>
#include <algorithm>
std::ifstream fin("strmatch.in");
std::ofstream fout("strmatch.out");
int main()
{
std::string A = "", B = "";
int* v = new int[100000];
int hash = 0;
int sum = 0;
int app = 0;
fin >> A >> B;
int64_t m = A.length(), n = B.length();
std::printf("m=%I64d, n=%I64d\n", m, n);
if (m <= n) {
for (int i = 0; i < m; i++)
{
hash += int(A[i]);
sum += int(B[i]);
}
for (int i = m - 1; i < n; i++) {
if (i >= m)
sum += int(B[i]);
//if(i % 10000 == 0)
//std::cout << "i=" << i << '\n';
if (sum == hash)
if (B.substr(i - m + 1, m) == A)
v[app++] = i - m + 1;
sum -= int(B[i - m + 1]);
}
std::cout << "gata";
}
fout << app << std::endl;
if (app != 0 && m <= n) {
for (int i = 0; i < std::min(app, 1000); i++)
fout << v[i] << " ";
}
else fout << 0;
}