Pagini recente » Cod sursa (job #1009588) | Cod sursa (job #426499) | Cod sursa (job #2625620) | Cod sursa (job #1776135) | Cod sursa (job #692170)
Cod sursa(job #692170)
#include<cstdio>
#include<cstring>
#include<vector>
#include<deque>
using namespace std;
char a[2000001], b[2000001];
int na, nb, nr;
vector <int> L;
int main() {
int i, n, m, k;
freopen("strmatch.in", "r", stdin), freopen("strmatch.out", "w", stdout);
scanf("%s %s", a, b);
n = strlen(a), m = strlen(b);
for(i = 0; i < n; i++) na = na + (a[i] - '0'), nb = nb + (b[i] - '0');
for(i = 0; i < m - n; i++) {
if(nb == na) {
for (k = 0; k < n && a[k] == b[k + i]; k++);
if (k == n) nr++, L.push_back(i);
}
nb = nb - (b[i] - '0');
nb = nb + (b[i + n] - '0');
}
printf("%d\n", nr);
for(i = 0; i < nr && i < 1000; i++) printf("%d ", L[i]);
return 0;
}