object Main {

  case class Problems(i: Int, p: Int, c: Int) {
    def baseScore: Int = 100 * (i + 1)
    def fullScore: Int = baseScore * p + c
    def untilScore: Int = baseScore * (p - 1)
    def problemsOf(score: Int): Int =
      Math.ceil(score / baseScore.toDouble).toInt
  }

  def main(args: Array[String]): Unit = {
    val sc = new java.util.Scanner(System.in)
    val D, G = sc.nextInt()
    val problems: IndexedSeq[Problems] = (0 until D).map { i =>
      val p, c = sc.nextInt()
      Problems(i, p, c)
    }

    val INF = Int.MaxValue / 10

    def solve(): Int = {
      def dfs(i: Int, score: Int, unsolved: Option[Int]): Int =
        if (i < D) {
          val problem = problems(i)
          if (score < G)
            (dfs(i+1, score + problem.fullScore, unsolved) + problem.p) min
              dfs(i+1, score, Some(i))
          else dfs(i+1, score, Some(i))
        } else {
          if (score >= G) 0
          else if (unsolved.nonEmpty) {
            val problem = problems(unsolved.get)
            if (score + problem.untilScore >= G)
              problem.problemsOf(G - score)
            else INF
          } else INF
        }
      dfs(0, 0, None)
    }

    println(solve())
  }

}
