cin.tie(0), cout.tie(0), ios_base::sync_with_stdio(false) 하면 무조건 더 빨라지는걸로 알고있었는데
1208번: 부분수열의 합 2 (acmicpc.net) 이 문제에서
70111871번 소스 코드 (acmicpc.net) 이건 ios_base::sync_with_stdio(false)를 넣었더니 시간초과 났고
70111882번 소스 코드 (acmicpc.net) 이건 저거 뺐더니 통과했었음
이럴 수가 있음?
왜 이러는거임?
정수의 개수가 40개인데 왜 tie랑 sync가 유의미한 수준일 거라고 생각함? 아무리 그래도 cin이 그렇게 느리진 않음
알고리즘이 바뀐 게 없다면 여러번 제출해보셈 그러면 통과하겠지
저거 tie랑 sync가 영향을 주는게 입력 속도뿐임? 저거 안 해도 출력속도는 똑같아?
일단 tie, sync 가 어떤 기능을 하는지는 이 글을 참고해보고.
https://www.acmicpc.net/blog/view/128
입력 속도 비교
https://www.acmicpc.net/blog/view/56
출력 속도 비교
https://www.acmicpc.net/blog/view/57
그러나, 이런 벤치마킹은 입출력 횟수 자체가 10^6 ~ 10^7 스케일에서 이뤄지므로 50번 남짓 입출력 따위로는 거의 차이가 없을 거라고 짐작할 수 있음
고맙다 게이야 전에 tie, sync 적용하고 시간이 극적으로 줄어든걸 경험한 적이 있어서 습관적으로 쓰고있었네 이 정도 규모 입출력에서는 영향 미미한게 맞구나
윗댓 말처럼 정수 40개에 그렇게 유의미한 시간차이가 나지는 않을거고 그냥 억까당해서 932 -> 1000ms를 넘긴 걸수도 확실하게 확인하려면 sync_with_stdio 넣은 코드 한번 더 돌려보셈
그냥 있으나 없으나 별 영향 없는게 맞는데 오차 약간 때문에 통과 못한거라는거임?
참고로 cout.tie는 할필요없음 무의미한 코드임
cin.tie랑 cout.tie 중 하나만 하면 되는거임? 아니면 그냥 cout.tie 자체가 아무 기능 없는거임?
하나만 해줘도 서로 연걸 끊어서 하나만 해도 됨. 그렇다고 둘 다 한다고 성능차가 있지는 않아서 원하는대로 ㄱㄱ - dc App
이게 이해안하고 그냥 막 갖다 쓰는자의 무지함이군..
그럼 왜 저러는건데