Problem:
Score : 200 points

Problem Statement

N friends of Takahashi has come to a theme park.

To ride the most popular roller coaster in the park, you must be at least K centimeters tall.

The i-th friend is h_i centimeters tall.

How many of the Takahashi's friends can ride the roller coaster?

Constraints

1 \le N \le 10^5

1 \le K \le 500

1 \le h_i \le 500

All values in input are integers.

Input

Input is given from Standard Input in the following format:

N K
h_1 h_2 \ldots h_N

Output

Print the number of people among the Takahashi's friends who can ride the roller coaster.

Sample Input 1

4 150
150 140 100 200

Sample Output 1

2

Two of them can ride the roller coaster: the first and fourth friends.

Sample Input 2

1 500
499

Sample Output 2

0

Sample Input 3

5 1
100 200 300 400 500

Sample Output 3

5

Solution in C# (Mono 4.6.2.0) (judge verdict: Accepted)

using System;
using static System.Console;
using static System.Math;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TemplateAlgorithm
{

    /// <summary>
    /// 素集合(UnionFindTree)
    /// </summary>
    class DisjointSet
    {
        public List<int> Rank { get; set; }
        public List<int> Parent { get; set; }

        public DisjointSet()
        {
            Rank = new List<int>();
            Parent = new List<int>();
        }

        public DisjointSet(int size)
        {
            Rank = Enumerable.Repeat(0, size).ToList();
            Parent = Enumerable.Repeat(0, size).ToList();

            for (var i = 0; i < size; i++) { MakeSet(i); }
        }

        public void MakeSet(int x)
        {
            this.Parent[x] = x;
            this.Rank[x] = 0;
        }

        public int FindSet(int x)
        {
            if (!IsRoot(x))
            {
                Parent[x] = FindSet(Parent[x]);
            }
            return Parent[x];
        }

        public void Unite(int x, int y)
        {
            x = FindSet(x);
            y = FindSet(y);

            if (Rank[x] > Rank[y])
            {
                Parent[y] = x;
            }
            else
            {
                Parent[x] = y;
                if (Rank[x] == Rank[y])
                {
                    Rank[y]++;
                }
            }
        }

        public bool IsSame(int x, int y) => FindSet(x) == FindSet(y);

        public bool IsRoot(int x) => x == Parent[x];
    }

    class Program
    {
        public const long Inf = (long)1e18;
        public const double eps = 1e-6;
        public const string alfa = "abcdefghijklmnopqrstuvwxyz";
        public const string ALFA  = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        public const int MOD = 1000000007;

        static void Main(string[] args)
        {
            int[] data = IO.ReadIntArr();
            int N,K;
            ApplyTwo(data, out N, out K);
            data = IO.ReadIntArr();
            IO.Cout(data.Count(x => x >= K));
            
        }

        #region　変換

        /// <summary>
        /// char -> int
        /// </summary>
        /// <param name="self"></param>
        /// <returns></returns>
        public static int ToInt(char self)
        {
            return self - '0';
        }

        #endregion

        #region 割り当て

        public static void ApplyTwo<T>(T[] A, out T a, out T b) { a = A[0]; b = A[1]; }

        public static void ApplyThree<T>(T[] A, out T a, out T b, out T c) { a = A[0]; b = A[1]; c = A[2]; }

        #endregion

        #region MIN,MAX

        /// <summary>
        /// 最大値を返す
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="vals"></param>
        /// <returns></returns>
        public static T MaxValue<T>(params T[] vals) => vals.Max();

        /// <summary>
        /// 最小値を返す
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="vals"></param>
        /// <returns></returns>
        public static T MinValue<T>(params T[] vals) => vals.Min();
        #endregion

        #region IO

        /// <summary>
        /// IO
        /// </summary>
        public class IO
        {
            public static string ReadStr(bool isTrim = false) => (isTrim) ? Console.ReadLine().Trim() : Console.ReadLine();
            public static int ReadInt() => int.Parse(ReadStr());
            public static uint ReadUInt() => uint.Parse(ReadStr());

            public static long ReadLong() => long.Parse(ReadStr());
            public static ulong ReadULong() => ulong.Parse(ReadStr());

            public static decimal ReadDecimal() => decimal.Parse(ReadStr());
            public static double ReadDouble() => double.Parse(ReadStr());
            public static string[] ReadStrArr(char separator = ' ') => Console.ReadLine().Split(separator);
            public static int[] ReadIntArr() => Array.ConvertAll(ReadStrArr(), int.Parse);
            public static long[] ReadLongArr() => Array.ConvertAll(ReadStrArr(), long.Parse);

            public static ulong[] ReadULongArr() => Array.ConvertAll(ReadStrArr(), ulong.Parse);

            public static decimal[] ReadDecimalArr() => Array.ConvertAll(ReadStrArr(), decimal.Parse);
            public static double[] ReadDoubleArr() => Array.ConvertAll(ReadStrArr(), double.Parse);
            
            public static void Cout<T>(T value) => Console.WriteLine(value);
            public static void CoutJoin<T>(T[] values, string separator = " ") => Cout(string.Join(separator, values));
        }

        #endregion();
    }
}