フレンドリーさが大きい順に到着するのが最適である. よって, フレンドリーの降順にソートしておく.

輪になっている人の中の隣り合ってる人の間の辺に, そこに割り込んだ際の心地よさを考える.

1番目の人が到着したあとは \((A_1)\) の心地よさを持つ辺ができる.

2番目の人が到着すると \(A_1\) の辺に割り込むので \(A_1\) の心地よさを得ることができ, \((A_2, A_2)\) の心地よさを持つ辺ができる.

3番目の人が到着すると \(A_2\) の辺に割り込むので \(A_2\) の心地よさを得ることができ, \((A_2, A_3, A_3)\) の心地よさを持つ辺ができる.

このようにして到着するたびに残りの辺のうち最大の心地よさを持つ辺に割り込み, 到着した人のフレンドリーさを持つ辺が2つ作られる. 到着した結果できる2つの辺の心地よさは今までの辺の心地よさより大きくはないので, 辺の列の最後に追加していけばいい. こうすることで辺の列の先頭は常に一番心地よさの高い辺が現れることになる. これはキューで管理できる.