TC로 디버깅 해보니까 for문에서
while(l < query[i].l) sub(a[l++]);
이 줄이 먼저 실행되는데 sub()함수 내에서
cnt[x]가 0인 상태에서 cnt[x]--;를 실행하게 됩니다. 그러면 cnt[x]는 -1인데
그 다음에 table[cnt[x]]++를 실행하면서 table[-1]의 값을 변경하게 되네요
아마 이렇게 음수 인덱스에 접근하는 경우가 있어서 vector가 오염되서 문제가 발생하는게 아닐까 싶네요
malratz 2년 전
24번줄에 선언한 vector<Query> query를 25번 라인 아래에 선언하면 런타임 에러가 뜨는데, 이유가 뭘까요?