バイトの競プロメモ

主に競技プログラミング

E - Multiplication 4 AtCoder Beginner Contest 173

問題文

https://atcoder.jp/contests/abc173/tasks/abc173_e

 

解法

(editorialとは違う方法です)

まず、答えの正負で場合分けします。

負の数を偶数個選べる場合は正、選べない場合答えは負となります。(ここでAに0があれば答えを0に出来る事に注意)

 

この上で、オーバーフローを避けるため、積の対数を取りその大小を考えます。

後は正の数と負の数のvectorを作り、答えが正の場合は絶対値が大きい順にソート。負の場合は絶対値が小さい順にソートして。前から貪欲に取る個数を決めればいいです。

 

詳しくはコードを見てください

https://atcoder.jp/contests/abc173/submissions/15046707