본문 바로가기

Solutions/Dlbo's Solution

UVa 562. Dividing coins. AC get -_-;



하앍하앍.

원래 리스트와 셋을 이용해 처리하려 했습니다만,

이 빌어먹을 UVa는 .end()로 얻는 포인터에서 --연산으로 뒤에서부터 하나씩 전진해오면 RE가 뜨는군요.

이 풀이는 단순합니다.

일단 여기선 귀찮아서 int형으로 해뒀는데,

pos배열처럼 bool형으로 된 크기 n(동전 가치 총합)의 배열을 만듭니다.

이후, 각 동전 가치 부분은 당연히 2명이 나눠가질 수 있는 분할을 만들 수 있고

거기에 두세개 이상의 동전을 합했을때 나눠지는 경우까지 모두 이 pos 배열에 저장해서

그 분할되는 지점만을 true로 둡니다.

이후, half(정 중앙 지점)에서부터 양쪽 어디든지 가장 가까운 true를 찾아내어서

그 때의 두 수의 차이를 출력하면 문제는 해결됩니다.