import java.util.Scanner object Problem216 { def proc(a: Seq[Int], b: Seq[Int]): String = { if (!b.exists(_ != 0)) { return "YES" } val grouped: Map[Int, Seq[(Int, Int)]] = a.zip(b) groupBy { x => x._2 } map { x => x._1 -> x._2 } val scores: Map[Int, Int] = grouped map { x => x._1 -> x._2.map(_._1).sum } val myScore: Int = scores.getOrElse(0, -1) val victoryScore: Int = scores.filter(_._1 != 0).maxBy(_._2)._2 if (myScore >= victoryScore) "YES" else "NO" } def main(args: Array[String]) { val sc = new Scanner(System.in) val N = sc.nextInt() val a = Seq.fill(N)(sc.nextInt()) val b = Seq.fill(N)(sc.nextInt()) val result = proc(a, b) println(result) } }