---
# System prepended metadata

title: d872. 過橋問題

---

# d872. 過橋問題
## 題目連結: [d872](https://zerojudge.tw/ShowProblem?problemid=d872)

## 遇到的困難
* 不知道怎麼過才是最佳解
* 不知道要分開討論

## 失敗的程式碼
```python=
import sys

for ppl in sys.stdin:
    here = [int(i) for i in input().split()] #橋的這邊
    there = [] #橋的對面
    time = 0

    while len(here) > 0:
        if len(there) <= 0: #如果沒有人在橋的對面
            here.sort()
            try:
                time += here[1]
                there.append(here.pop(0))
                there.append(here.pop(0))
            except:
                time += here[0]
                there.append(here.pop(0))
                break

            if len(here) == 0: break
            
            there.sort()
            print(here," ",there,time,"a")
            time += there[0]
            here.append(there.pop(0))
            print(here," ",there,time,"b")
        else:
            here.sort()
            try:
                there.append(here.pop(-2))
                time += here[-1]
                there.append(here.pop(-1))
            except:
                time += here[0]
                there.append(here.pop(0))
                break

            if len(here) == 0: break
            
            there.sort()
            print(here," ",there,time,"c")
            time += there[0]
            here.append(there.pop(0))
            print(here," ",there,time,"d")
        
    print(time)
```

## 經過老師解釋後的改良
* 分成兩種可能的情況，再找出最小的
* 剩餘人數小於4的時候也要分開討論

## 程式碼
```python=
import sys

for ppl in sys.stdin:
    here = [int(i) for i in input().split()]
    here.sort()
    time = 0

    np = int(ppl)

    while np >= 4:
        #case1 第一快跟第二快過去，第一快回來，最慢兩個再過去
        t1 = here[0]*2 + here[np-2] + here[np-1]
        #case2 如果第二快也很慢，第一快帶最慢過去，並依序帶完所有人
        t2 = here[0] + here[1]*2 +here[np-1]
        time += min(t1,t2)

        np -= 2

    if np == 3:
        time += here[2]+here[0]+here[1]
    elif np == 2:
        time += here[1]
    else:
        time += here[0]

    print(time)
    
```
如此一來雖然答案都是對的了，但放到[zerohudge](https://zerojudge.tw/)上仍會發生TLE問題