#include #define MAXN 100 int main(void) { int i = 0; // aktuální pozice int p = MAXN; // aktuální prefixový součet (posunutý o MAXN, aby jím šlo indexovat pole) int poprve[2*MAXN+1]; // kde jsme poprvé viděli daný prefixový součet (-1=nikdy) for (int i=0; i<2*MAXN+1; i++) poprve[i] = -1; poprve[MAXN] = 0; int c; int max = 0, maxz = 0; // nejdelší zatím nalezený bílý úsek a jeho začátek while ((c = getchar()) != '\n') { i++; if (c == 'x') p++; else p--; if (poprve[p] < 0) poprve[p] = i; else { int l = i - poprve[p]; // délka nejdelšího bílého úseku končícího aktuálním znakem if (l > max) max = l, maxz = poprve[p]; } } printf("Nejdelší bílý úsek má délku %d a začíná na pozici %d\n", max, maxz); return 0; }