seokvely   3년 전

cin.tie(0)만 해줘도 시간초과가 해결되네요.

그런데 이해가 안됩니다. 데이터가 그리 큰 것도 아닌데 왜 시간초과가 나는 걸까요?

djm03178   3년 전

cin.tie(0);을 하지 않으면 cin은 cout에 묶여있습니다. 그 말은 cin을 할 때마다 cout에 flush가 발생한다는 것입니다. 버퍼를 flush하는 것은 정말로 매우 무거운 작업이고, 채점 환경에서 10만 번에 1초가 넘게 걸립니다.

seokvely   3년 전

혹시 다른 문제들의 경우,

데이터가 똑같이 십만 개이지만 cin.tie(0)을 하지 않아도 시간초과가 나오지 않는 것은 무슨 차이가 있을까요?

djm03178   3년 전

cin과 cout을 번갈아 쓰게 되는 문제에만 해당됩니다. 몰아서 입력받고 몰아서 출력하는 문제에는 상관 없습니다.

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