Problem:
Score : 100 points

Problem Statement

Takahashi wants to print a document with N pages double-sided, where two pages of data can be printed on one sheet of paper.

At least how many sheets of paper does he need?

Constraints

N is an integer.

1 \leq N \leq 100

Input

Input is given from Standard Input in the following format:

N

Output

Print the answer.

Sample Input 1

5

Sample Output 1

3

By printing the 1-st, 2-nd pages on the 1-st sheet, 3-rd and 4-th pages on the 2-nd sheet, and 5-th page on the 3-rd sheet, we can print all the data on 3 sheets of paper.

Sample Input 2

2

Sample Output 2

1

Sample Input 3

100

Sample Output 3

50

Solution in Kotlin (1.0.0) (judge verdict: Runtime Error)

import java.io.BufferedReader
import java.io.InputStreamReader
import java.util.*

val reader by lazy { BufferedReader(InputStreamReader(System.`in`)) }

@Suppress("ReplaceJavaStaticMethodWithKotlinAnalog")
fun main(a: Array<String>) {
    val args = reader.readArgs()
    val n = args[0].toInt()
    val m = args[1].toInt()

    val list = (1..m).map { reader.readArgs() }.map { (it[0].toInt() - 1) to it[1].toInt() }
    val s = list.map { it.first }
    val c = list.map { it.second }

    val scMap = HashMap<Int, MutableList<Int>>()

    s.forEachIndexed { i, digit ->
        val cList = scMap.getOrPut(digit) { ArrayList() }
        cList.add(c[i])
        scMap[digit] = cList.distinct().toMutableList()
    }

    scMap.map { it.value }.forEach {
        if (it.size > 1) {
            println(-1)
            return
        }
    }

    val answer = (1..n).map { -1 }.toMutableList()

    scMap.forEach { answer[it.key] = it.value.first() }
    answer.forEachIndexed { digit, number ->
        if (number == -1) {
            answer[digit] = 0
        }
    }

    if (answer.size == 1) {
        println(answer[0])
        return
    }

    if (answer[0] == 0) {
        println(-1)
        return
    }

    if (answer.filterNot { it == 0 }.isEmpty()) {
        println(-1)
        return
    }
    
    println(answer.joinToString(""))
}

fun BufferedReader.readArgs() = readLine().split(" ")
fun BufferedReader.readInt() = readLine().toInt()
fun BufferedReader.readLong() = readLine().toLong()
fun BufferedReader.readChar() = readLine().toInt().toChar()
fun BufferedReader.readString() = readLine().toInt().toString()