WeissBlume   9년 전

https://www.acmicpc.net/problem/2024

M이 5000이하라고 되어있는데,

실제로는 48000까지 고려해야 맞아요..

배열 작게 잡았다가 런타임에러를 맞아서 동적할당했습니다...

kesakiyo   9년 전

ㅎㅎ;;

저랑 같은 실수하셨네요ㅋㅋ

저도 선분의 갯수가 5000개인줄 알고 위상정렬로 풀다가 계속 시간초과를 받았습니다ㅠ,.ㅠ

근데!!!

[ 각 테스트 케이스는 M(1≤M≤5,000) 과 "Li Ri"(|Li|, |Ri|≤50,000, i≤100,000)쌍으로 구성이 된다. ]

이 문장을 보면 M이 5000 이라고 되어있죠. M은 덮어야되는 최대 위치가 5000인것이고....

실질적으로 들어오는 선분의 갯수는 i 즉 최대 100,000 인거죠!!

결론은 문제를 잘 읽어야 한다....ㅋㅋㅋ

Hibbah   9년 전

저도 문제 읽고 M이 테스트케이스의 수인가.. 선분의 최대 개수인가 헷갈렸는데,

따로 테스트케이스 T는 입력받지 않고 각 테스트케이스마다 마지막에 "0 0"이 입력되는걸 구분으로  여러 케이스가 입력되는 문제더군요

WeissBlume   9년 전

저는 M^2으로 풀었는데

int main() { int m, x, y, ans = 0, endpoint = 0, most[48000] = {}; scanf("%d", &m); if (m > 5000) while (true); /* ... */ return 0; }

이게 TLE입니다 ㅠㅠ

+) 테스트케이스가 여러개인줄도 이제알았어요 ㅋㅋㅋ

Hibbah   9년 전

일단 m이 문제 설명에 나온 5000보다는 큰 값이 입력되는게 맞나보네요 ㅎㅎ

baekjoon   9년 전

문제에 문제가있네요

Nada   9년 전

m이 5000이 아니라 50000일듯 싶어요 li, ri <= 50000이니.. 

오타가 아닐까 싶어요.

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