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++14 (GCC 5.4.1) (judge verdict: Wrong Answer)

#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <functional>
#include <vector>
#include <string>
using namespace std;

typedef long long LL;
typedef vector<LL> VLL;
typedef vector<VLL> VVLL;

typedef vector<bool> VBL;
typedef vector<VBL> VVBL;

#define FOR(i,a,b) for(int i=(a);i<(b);++i)
#define REP(i,n)  FOR(i,0,n)

int main(){
  VVLL bingo(3,VLL(3,0));
  VVBL result(3,VBL(3,false));
  FOR(i,0,3){
    cin >> bingo[i][0] >> bingo[i][1] >> bingo[i][2];
  }

  int N;
  cin >> N;
  int nums[N];
  FOR(i,0,N){
    cin >> nums[i];
  }


  for(int j=0;j<3;++j){
    for(int k=0;k<3;++k){
      FOR(i,0,N){
        if(bingo[j][k] == nums[i]){
          result[j][k] = true;
          break;
        }
      }    
    }
  }

  // cout << result[0][0] << result[1][1] << result[2][2] << endl;

  for(int j=0;j<3;++j){
    if(result[j][0] && result[j][1] && result[j][2] ){
      cout << "Yes" << endl;
      return 0;
    }

    if(result[0][j] && result[1][j] && result[2][j] ){
      cout << "Yes" << endl;
      return 0;
    }
  }

  if(result[0][0] && result[1][1] && result[2][2] ){
      cout << "Yes" << endl;
      return 0;
  }


  cout << "No" << endl;
  return 0;
}