Problem:
Score : 300 points

Problem Statement

Given is a permutation P_1, \ldots, P_N of 1, \ldots, N.
Find the number of integers i (1 \leq i \leq N) that satisfy the following condition:

For any integer j (1 \leq j \leq i), P_i \leq P_j.

Constraints

1 \leq N \leq 2 \times 10^5

P_1, \ldots, P_N is a permutation of 1, \ldots, N.

All values in input are integers.

Input

Input is given from Standard Input in the following format:

N
P_1 ... P_N

Output

Print the number of integers i that satisfy the condition.

Sample Input 1

5
4 2 5 1 3

Sample Output 1

3

i=1, 2, and 4 satisfy the condition, but i=3 does not - for example, P_i > P_j holds for j = 1.

Similarly, i=5 does not satisfy the condition, either. Thus, there are three integers that satisfy the condition.

Sample Input 2

4
4 3 2 1

Sample Output 2

4

All integers i (1 \leq i \leq N) satisfy the condition.

Sample Input 3

6
1 2 3 4 5 6

Sample Output 3

1

Only i=1 satisfies the condition.

Sample Input 4

8
5 7 4 2 6 8 1 3

Sample Output 4

4

Sample Input 5

1
1

Sample Output 5

1

Solution in C# (Mono 4.6.2.0) (judge verdict: Wrong Answer)

using static System.Console;
using System;

class Program
{
  static void Main(string[] args)
  {
    int N =int.Parse(ReadLine()),count = 0;
    int[] p = new int[N];
    bool b;
    string[] s = ReadLine().Split(' ');
    for(int i = 0;i < N;i++)p[i] = int.Parse(s[i]);
    for(int i = 0;i < N;i++)
    {
      b = true;
      if(p[i] == Program.Max(p))
      {
        count++;
        continue;
      }
      if(p[i] == Program.Min(p))
      {
        count++;
        continue;
      }
      for(int j = 0;j <= i;j++)
      {
        if(p[i] > p[j])
        {
          b = false;
          break;
        }
      }
      if(b)count++;
    }
    WriteLine(count);
  }
  public static int Max(params int[] nums)
  {
    if(nums.Length == 0) return 0;
    int max = nums[0];
    for(int i = 1; i < nums.Length; i++)
    {
        max = max > nums[i] ? max : nums[i];
    }
    return max;
  }
  public static int Min(params int[] nums)
  {
    if(nums.Length == 0) return 0;

    int max = nums[0];
    for(int i = 1; i < nums.Length; i++)
    {
        max = max < nums[i] ? max : nums[i];
    }
    return max;
  }
}