キーエンス プログラミング コンテスト 2019 C - Exam and Wizard
解けなかった。
ヒープを使うのかと思い考えてみたが、解法が思いつかなかった。
解答PDFと動画を見て解き方を理解した。
まず、AよりもBが大きい場合は答えが存在しないため、-1を出力。
次に、配列A-Bの要素のパターンは3つ。
①マイナス(minus) : A < B
②0 : A == B
③プラス(plus) : A > B
このうち、②の0は無視し、①をminus配列に、③をplus配列に入れる。
minusは必ず変更するため、minusの個数をansに格納。
そうすると、plusからいくつの要素を変更するか、が要点となる。
結局、(minusの個数) + (変更したplusの個数) が答え。
pythonコード