int main() {
char ch, s[40000];
int i = 0, j;
while (scanf("%c", &ch) != EOF) {
if (ch != '\n')
s[i++] = ch;
}
int n = sqrt(i), flag = 0, cnt = 0;
printf("%d", n);
for (j = 0; j < i; ++j) {
if ((s[j]-'0') ^ flag == 0) {
++cnt;
}
else {
printf(" %d", cnt);
cnt = 1;
flag = flag ^ 1;
}
}
printf(" %d", cnt);
return 0;
}
附一组数据
11111
00100
11111
00100
11111
本地结果 5 0 5 2 1 2 5 2 1 2 5
洛谷结果 5 0 6 2 1 2 5 2 1 2 5