QOJ.ac

QOJ

Límite de tiempo: 1.0 s Límite de memoria: 1024 MB Puntuación total: 100 Hackeable ✓

#14508. Naszyjnik z pereł

Estadísticas

Aya ma na biurku naszyjnik z pereł $a$ o długości $n$. Każda perła ma określoną wartość blasku, przy czym $i$-ta perła od początku ma wartość blasku $a_i$.

Aya trzyma w ręku naszyjnik $b$, który początkowo jest pusty. Wykonuje ona serię operacji, przy czym w $i$-tym kroku może wybrać jedną z dwóch następujących akcji:

  • Dodać na koniec naszyjnika $b$ perłę o wartości blasku równej $i$.
  • Zwiększyć o $1$ wartość blasku dowolnej perły znajdującej się w naszyjniku $b$.

Aya chce wiedzieć, jaka jest minimalna liczba operacji potrzebna, aby naszyjnik $b$ stał się identyczny z naszyjnikiem $a$. Jeśli uzyskanie naszyjnika $b$ identycznego z $a$ jest niemożliwe, należy odpowiedzieć $-1$.

Wejście

W pierwszej linii wejścia znajduje się jedna liczba całkowita $T$ ($1 \le T \le 10^4$), oznaczająca liczbę zestawów danych.

Dla każdego zestawu danych: W pierwszej linii znajduje się jedna liczba całkowita $n$ ($1 \le n \le 5 \times 10^5$), oznaczająca długość naszyjnika $a$. W drugiej linii znajduje się $n$ liczb całkowitych, gdzie $i$-ta liczba to $a_i$ ($1 \le a_i \le 10^{12}$), oznaczająca wartość blasku $i$-tej perły w naszyjniku $a$ (licząc od początku).

Suma $n$ dla wszystkich zestawów danych nie przekracza $5 \times 10^5$.

Wyjście

Dla każdego zestawu danych: Wypisz w jednej linii liczbę całkowitą oznaczającą minimalną liczbę operacji. Jeśli nie da się sprawić, by naszyjnik $b$ był identyczny z $a$, wypisz $-1$.

Przykład

Wejście 1

3
5
1 2 4 5 6
8
1 2 4 5 5 8 10 9
3
3 2 1

Wyjście 1

6
13
-1

Uwagi

Dla pierwszego zestawu danych: Przykładowy plan operacji o łącznej liczbie 6: 1. Dodaj perłę o wartości 1 na koniec $b$. 2. Dodaj perłę o wartości 2 na koniec $b$. 3. Dodaj perłę o wartości 3 na koniec $b$. 4. Zwiększ wartość 3. perły w $b$ o 1. 5. Dodaj perłę o wartości 5 na koniec $b$. 6. Dodaj perłę o wartości 6 na koniec $b$.

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.