d1p3 (CCO Canadian_Computing_Olympiad)
Time limit: 2 seconds | Memory limit: 1024 MB | Task type: batch
Algorithms: implementation, ad-hoc, data structures, dynamic programming

# 2023 Canadian Computing Olympiad
# Day 1, Problem 3
# Line Town

**Time Limit:** 2 seconds

**Problem Description**

The $N$ residents of Line Town have arranged themselves in a line. Initially, the residents have happiness values of $h_1, h_2, ..., h_N$ from left to right along the line.

Since you are the mayor of Line Town, you are implementing the third pillar of your plan entitled "Community, Candy, and Organization” (CCO). As such, you have taken the mayoral power to swap the resident's locations. In one swap, you may tell two adjacent residents to swap their positions in the line. However, this swap will cause both residents to negate their happiness values.

You would like to perform some swaps so that the residents' happiness values are in non-decreasing order from left to right in the line. Determine whether this is possible, and if so, the minimum number of swaps needed.

## Input Specification

The first line of input contains a single integer $N$.

The next line of input contains $N$ integers $h_1, ..., h_N$ ($-10^9 \le h_i \le 10^9$), the happiness values of the residents from left to right.

| Marks Awarded | Bounds on $N$    | Bounds on $h_i$                                  |
| :------------ | :--------------- | :----------------------------------------------- |
| 3 marks       | $1 \le N \le 2000$     | $|h_i| = 1$ for all $i$                            |
| 3 marks       | $1 \le N \le 500\,000$ | $|h_i| = 1$ for all $i$                            |
| 3 marks       | $1 \le N \le 2000$     | $|h_i| \le 1$ for all $i$                            |
| 4 marks       | $1 \le N \le 500\,000$ | $|h_i| \le 1$ for all $i$                            |
| 4 marks       | $1 \le N \le 2000$     | $|h_i| \neq |h_j|$ for all $i \neq j$                   |
| 3 marks       | $1 \le N \le 500\,000$ | $|h_i| \neq |h_j|$ for all $i \neq j$                   |
| 2 marks       | $1 \le N \le 2000$     | No additional constraints                         |
| 3 marks       | $1 \le N \le 500\,000$ | No additional constraints                         |

## Output Specification

On a single line, output the minimum number of swaps, or $-1$ if the task is impossible.

**Sample Input 1**
```
6
-2 7 -1 -8 2 8
```

**Output for Sample Input 1**
```
3
```

**Explanation of Output for Sample Input 1**

It is possible to perform 3 swaps as follows:

1.  Swap the 2nd and 3rd resident so that the line becomes $[-2, 1, -7, -8, 2, 8]$.
2.  Swap the 4th and 5th resident so that the line becomes $[-2, 1, -7, -2, 8, 8]$.
3.  Swap the 3rd and 4th resident so that the line becomes $[-2, 1, 2, 7, 8, 8]$.

The residents are now arranged in non-decreasing order of happiness values as required. No non-decreasing arrangement can be obtained with less than 3 swaps.

**Sample Input 2**
```
4
1 -1 1 -1
```

**Output for Sample Input 2**
```
-1
```

## Explanation of Output for Sample Input 2

There is no sequence of swaps that will place residents in non-decreasing order of happiness values.

Starter code:

Grader code:

Setup script:

Evaluation script: