Pagini recente » Cod sursa (job #1702323) | Cod sursa (job #63962) | Cod sursa (job #2668697) | Cod sursa (job #2999335) | Cod sursa (job #682915)
Cod sursa(job #682915)
#include<cstdio>
#include<cstring>
#include<vector>
#include<deque>
using namespace std;
char a[2000001], b[2000001];
long long na, nb, nr;
vector <int> L;
int main() {
int i, j;
freopen("strmatch.in", "r", stdin), freopen("strmatch.out", "w", stdout);
scanf("%s %s", a, b);
for(i = 0; a[i]; i++) na += a[i] - '0';
for(i = 0, j = 0; b[i]; i++) {
bool afisare = true;
if(nb == na && strlen(a) == i - j) {
for(int ii = j, jj = 0; a[jj] && ii < i; ii++, jj++)
if(a[jj] != b[ii]) afisare = false;
if(afisare) nr++, L.push_back(j);
}
nb = nb + (b[i] - '0');
while(nb > na) nb = nb - (b[j++] - '0');
afisare = true;
if(nb == na && strlen(a) == i - j) {
for(int ii = j, jj = 0; a[jj] && ii < i; ii++, jj++)
if(a[jj] != b[ii]) afisare = false;
if(afisare) nr++, L.push_back(j);
}
}
printf("%lld\n", nr);
nr = nr < 1000 ? nr : 1000;
for(i = 0; i < nr; i++) printf("%d ", L[i]);
return 0;
}