[BOJ] 3665번: Rankings

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


팀 i에 대해 자신보다 높은 순위의 팀의 수를 가지고있는 변수를 하나 둡니다.(코드 상에서 cnt[i]) 그러고나면 상대적인 등수가 바뀐 두 팀에 대해, 두 팀을 a와 b라고 한다면(그리고 팀 a가 팀 b보다 이전에 높은 순위였다고 한다면) cnt[a]는 1 증가하고 cnt[b]는 1 감소합니다. 이렇게 cnt를 주어진 쿼리대로 다 바꾼 후, cnt[1~n]에 0~n-1이 중복 없이 전부 등장한다면 올바른 데이터임이 보장됩니다. cnt의 값이 작은 인덱스 순으로 출력하면 됩니다.(1등인 팀은 cnt가 0일 것이고, 2등인 팀은 cnt가 1일 것이고...)


만약 cnt[1~n]에 0~n-1이 중복 없이 전부 등장하지 않는다면 애초에 데이터가 잘못된 것이니 IMPOSSIBLE을 출력하면 됩니다.


정상적인 데이터라면 반드시 순위를 결정할 수 있기 때문에 ? 는 출력할 일이 없습니다.


https://github.com/blisstoner/BOJ/blob/master/3665.cpp

'알고리즘 > BOJ' 카테고리의 다른 글

[BOJ] 1865번: 웜홀  (0) 2018.01.09
[BOJ] 1766번: 문제집  (0) 2018.01.09
[BOJ] 1516번: 게임 개발  (0) 2018.01.09
[BOJ] 1325번: 효율적인 해킹  (0) 2018.01.07
[BOJ] 10216번: Count Circle Groups  (0) 2018.01.07
[BOJ] 1289번: 트리의 가중치  (0) 2018.01.07
  Comments