cin과 cout 은 느리니 scanf, printf 를 사용하면 될 것 같습니다.
c번의 데이터 케이스가 많아 입출력시간으로 인해 tle가 나네요 X(
10252번 - 그리드 그래프
저같은 경우에는, iostream 사용으로, 저지에서 몇 번 tle를 겪고 난 후 잘 사용하지 않게 되더라구요.
대전에서 iostream을 사용해 보진 않았지만, 저지솔루션을 공개하는 일부 해외레저널의 경우
일부 저지솔루션에 iostream으로 입출력을 하기도하니, 상황에 따라 다르지 않을까요?
+) 찾아보니 std::ios::sync_with_stdio(false); 이 scanf,printf만큼 속도를 향상시켜주는 함수였군요;
다만 endl 대신 '/n'을 사용하라는 말이 있어서 이리저리 바꿔내는데도, 계속 시간초과 ~_~ 왜그럴까요 ㅎㅎ
'/n' 이 아니라 "\n" 으로 해야하는거 아닌가요?? ㅎㅎ
어쨋든 사이트 문제인것같기도하고..
그런데 제가 std::ios::sync_with_stdio(false); 를 했을때와
scanf, printf 를 했을때 육안으로 속도 비교를 해봤는데
우분투 에서는 둘다 비슷하게 매우빨랐고
윈도우 에서는 아무리 std:ios::sync_with_stdio(false); 를 했음에도 불구하고 iostream 은 매우느렸고, scanf, printf 는 매우빨랐습니다.
서버 머신의 OS가 윈도우 여서 이런 시간 초과가 뜨는걸까요..? 흠
제 생각엔 std::ios::sync_with_stdio가 문제도 맞지만
cout << "('"<< endl 연산과
cout << "(" << "\n"; 연산의 차이가 20배정도 납니다.
( 이건 std::ios::sync_with_stdio가 있든 없든 마찬가지 입니다 )
아마 endl의 속도가 느려서 시간초과가 발생한거 아닌가 생각되요.
또 무슨 이유인지..std::ios::sync_with_stdio를 호출하면 n, m이
작을 때는 문제 없는데 n, m이 100일때
사용할 수 없는 system call을 호출했다고 떠서 런타임에러가 뜨네요.
결국 std::ios::sync_with_stdio를 지우고 endl 대신에 "\n"으로 바꿔주기만 하면
시간안에 나오는 것 같아요.
결론은 많은 출력이나 입력이 필요할 땐 scanf, printf 쓰는게 안전할듯 싶네요.
댓글을 작성하려면 로그인해야 합니다.
sgc109 9년 전
인터넷 예선에서 정답이었는데 이곳에서는 채점중(0%) 가 유지되다가 시간초과가 납니다.
딱히 시간 초과날일도 없는것같고 아무리 여러 케이스에 대해서 테스트를 해봐도 저는 시간초과가 나질않습니다.
우분투상에서 실행을 해봤는데도 문제가 없었고 최대 케이스인 100 100 에 대해서도 시작하자마자 바로 모든 결과가
출력되고 종료될만큼 속도가 빠르고 최소 케이스인 3 3 에 대해서도 알맞게 결과가 나오는데 왜 시간초과라는 채점 결과가 나온건지 잘 모르겠습니다.
다시 한번 이 문제에 대한 채점 시스템을 확인해주시면 정말 감사드리겠습니다. 혹시몰라서 제 소스를 첨부합니다.