데이터를 읽어 edge 리스트에 저장 - edge는 i - 팀 번호, k - 팀원 수, dis_a - a까지의 거리, ab - dis_a - dis_b
그 후 edge를 ab에 대하여 오름차로 정렬합니다. -> ab이 가장 작은 값이 edge의 앞에 옵니다.
각각에 edge의 요소에 대해 반복합니다. 만약 ab < 0이라면 dis_a가 dis_b보다 작다는 의미기 때문에 a가 k 보다 크다면 -> a가 k보다 많아 k를 전부 할당 가능 / k * dis_a 만큼을 합하고 a를 k만큼 줄입니다. 만약 a가 k보다 작다면 a*dis_a와 (k-a) (dis_a-ab) 를 합하고, a =0 b -= k-a를 합니다. 그 후 ab <0아니라면 반복문을 멈춥니다.
위와 같은 방법을 edge를 반대로 뒤집어 ab >0 b 에 대해 적용합니다.
ab == 0일 때는 a,b 아무데나 추가해도 상관없으며, 풍선의 수는 사람 수 보다 많거나 같기 때문에 k * dis_a를 해줍니다.
jsy8481 4년 전
코드를 짠 흐름은 다음과 같습니다.
1 퍼센트도 올라가지 못하고 틀립니다.(이것은 혹시 참고가 될까 첨부합니다.)
코딩 고수님들에 도움을 필요로 합니다. 읽어주셔서 감사합니다.