Într-o bibliotecă se află C
dulapuri identice aşezate unul lângă altul pe peretele unei încăperi, dulapurile fiind numerotate de la stânga spre dreapta cu numerele naturale de la 1
la C
. Fiecare dulap conţine 1000
de rafturi, situate vertical unul deasupra altuia, rafturile fiecărui dulap fiind numerotate de la 1
la 1000
de jos în sus.
Fiecare dulap este prevăzut cu o scară cu care se poate ajunge la orice raft. Dacă bibliotecara urcă scara unui anumit dulap D
până la un anumit nivel k
, ea va putea aduna orice carte de pe rafturile 1
până la k
inclusiv, din dulapul D
şi din dulapurile învecinate (dulapul D-1
şi dulapul D+1
).
Cunoscând dulapurile şi rafturile de unde trebuie luate cărţi, bibliotecara doreşte să adune toate cărţile cerute, dar suma înălţimilor până la care trebuie să urce să fie minimă.
Cerința
Scrieţi un program care să determine suma minimă a înălţimilor până la care trebuie să urce bibliotecara pentru a aduna toate cărţile cerute.
Date de intrare
Prima linie a fişierului de intrare rafturi.in
conţine două numere naturale C
şi N
, separate printr-un spaţiu, reprezentând numărul dulapurilor şi respectiv numărul cărţilor pe care bibliotecara trebuie să le adune.
Următoarele N
linii conţin câte două numere naturale a b
, separate printr-un spaţiu, reprezentând numărul dulapului, respectiv numărul raftului de unde trebuie luată o carte.
Date de ieșire
Fişierul de ieşire rafturi.out
va conţine un singur număr natural reprezentând suma minimă a înălţimilor până la care trebuie să urce bibliotecara pentru a aduna toate cărţile cerute.
Restricții și precizări
1 ≤ C ≤ 10.000
1 ≤ N ≤ 50.000
Exemplu:
rafturi.in
10 4 5 4 1 1 6 2 3 8
rafturi.out
11
Explicație
Bibliotecara urcă astfel:
- pe dulapul
1
la raftul1
- pe dulapul
4
la raftul8
- pe dulapul
6
la raftul2