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 C# (Mono 4.6.2.0) (judge verdict: Runtime Error)

using System.Collections.Generic;
using System.Linq;

public class Hello
{
    public static void Main()
    {
        hoge();
    }

    public static void hoge()
    {
        var line = System.Console.ReadLine().Split(' ');
        var n = int.Parse(line[0]);
        var m = int.Parse(line[1]);

        int[] num = { 0, 0, 0 };

        Dictionary<int, int> deta = new Dictionary<int, int>();
        if (n == 1)
        {
            num[0] = 1;
            for (int i = 0; i < m; i++)
            {
                line = System.Console.ReadLine().Split(' ');
                var s = int.Parse(line[0]);
                var c = int.Parse(line[1]);

                if (deta.ContainsKey(s) && deta[s] != c)
                {
                    for(int j = i + 1; j < m; j++)
                    {
                        System.Console.ReadLine();
                    }
                    System.Console.WriteLine("-1");
                    return;
                }

                if (deta.ContainsKey(s) && deta[s] == c)
                {
                    continue;
                }

                if (s == 1)
                {
                    num[0] = c;
                }
                deta.Add(s, c);
            }
            if (num[0] == 0)
            {
                num[0] = -1;
            }
            System.Console.WriteLine(num[0]);
            return;
        }

        if (n == 2)
        {
            num[1] = 1;
            for (int i = 0; i < m; i++)
            {
                line = System.Console.ReadLine().Split(' ');
                var s = int.Parse(line[0]);
                var c = int.Parse(line[1]);

                if (deta.ContainsKey(s) && deta[s] != c)
                {
                    for (int j = i + 1; j < m; j++)
                    {
                        System.Console.ReadLine();
                    }
                    System.Console.WriteLine("-1");
                    return;
                }
                if (deta.ContainsKey(s) && deta[s] == c)
                {
                    continue;
                }

                if (s == 1)
                {
                    num[1] = c;
                }
                else
                {
                    num[0] = c;
                }
                deta.Add(s, c);
            }
            if (num[1] == 0)
            {
                System.Console.WriteLine("-1");
                return;
            }
            System.Console.WriteLine("" + num[1] + num[0]);
            return;
        }

        if (n == 3)
        {
            num[2] = 1;
            for (int i = 0; i < m; i++)
            {
                line = System.Console.ReadLine().Split(' ');
                var s = int.Parse(line[0]);
                var c = int.Parse(line[1]);

                if (deta.ContainsKey(s) && deta[s] != c)
                {
                    for (int j = i + 1; j < m; j++)
                    {
                        System.Console.ReadLine();
                    }
                    System.Console.WriteLine("-1");
                    return;
                }
                if (deta.ContainsKey(s) && deta[s] == c)
                {
                    continue;
                }

                if (s == 1)
                {
                    num[2] = c;
                }
                else if (s == 2)
                {
                    num[1] = c;
                }
                else
                {
                    num[0] = c;
                }
                deta.Add(s, c);
            }
            if (num[2] == 0)
            {
                System.Console.WriteLine("-1");
                return;
            }
            System.Console.WriteLine("" + num[2] + num[1] + num[0]);
            return;
        }
    }
}