malratz   2년 전

24번줄에 선언한 vector<Query> query를 25번 라인 아래에 선언하면 런타임 에러가 뜨는데, 이유가 뭘까요?

becl3ver   2년 전

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가 오염되서 문제가 발생하는게 아닐까 싶네요

댓글을 작성하려면 로그인해야 합니다.