2517번 - 달리기
해답은 세그트리라고 알지만, 맵으로 해결할 수 있는 방법이 없나 싶어 이야기를 남깁니다.
현재 들어온 값이 맵의 end() -1에 존재하면 끝에 위치하는거니 1등이 될 가능헛ㅇ이 있는 것이고, 그게 아닌 모든 값들은 맵에서 몇번째에 위치하는지 order를 구해주면 된다고 생각했습니다.
그런데 order 구하는 방법이 logN에 끝날 줄 알았는데 그게 안되더라구요.
vector에서는 lower_bound() - V.begin()을 하면 인덱스가 나타나지만 map은 균형 이진 트리라 인덱스 개념이 없다보니 안되는 것 같더라구요
이런 생각에 대해 조언을 좀 구하고싶습니다.
혹시 다른 풀이를 원한다면
mergesort코드 활용하면 풀이가능할것 같습니다
댓글을 작성하려면 로그인해야 합니다.
kkw564 6년 전
해답은 세그트리라고 알지만, 맵으로 해결할 수 있는 방법이 없나 싶어 이야기를 남깁니다.
현재 들어온 값이 맵의 end() -1에 존재하면 끝에 위치하는거니 1등이 될 가능헛ㅇ이 있는 것이고, 그게 아닌 모든 값들은 맵에서 몇번째에 위치하는지 order를 구해주면 된다고 생각했습니다.
그런데 order 구하는 방법이 logN에 끝날 줄 알았는데 그게 안되더라구요.
vector에서는 lower_bound() - V.begin()을 하면 인덱스가 나타나지만 map은 균형 이진 트리라 인덱스 개념이 없다보니 안되는 것 같더라구요
이런 생각에 대해 조언을 좀 구하고싶습니다.