반응형
https://www.algospot.com/judge/problem/read/ZEROONE
01 또는 10으로 바뀌는 순간 addIndex가 변경됨.
입력값 i, j의 차와 OUTPUT의 값을 비교하여 변경지점을 찾을 수 있음.
index Searching은 시간초과로 실패함.
#include
#define abs(a)(((a) < (0))?-(a):(a))
char INPUT[1000001];
int OUTPUT[1000001];
void SOLVE()
{
int i, j;
scanf("%d %d", &i, &j);
if (OUTPUT[(i > j) ? i : j] >= abs(i - j))
printf("Yes\n");
else
printf("No\n");
return;
}
int main()
{
int N;
scanf("%s", INPUT);
char PC = INPUT[0];
OUTPUT[0] = '0';
for (int i = 0, j = 1; INPUT[j]; j++){
if (INPUT[i] != INPUT[j])
i = j;
OUTPUT[j] = j - i;
}
scanf("%d", &N);
while (N-- > 0)
{
SOLVE();
}
return 0;
}
반응형