Krzysztof Diks, Marcin Kubica (przekład)

Spłaszczanie

W pewnej jednoosobowej grze ustawia się w rzędzie N stosów tak, że każdy z nich zawiera pewną liczbę (być może zero) krążków. Zobacz rysunek 1. Stosy są ponumerowane od 1 do N w ten sposób, że stosy 1 i N są na końcach. Ruch w tej grze polega na tym, że gracz wskazuje pewien stos, powiedzmy p, oraz podaje liczbę, powiedzmy m. Powoduje to przełożenie po m krążków ze stosu p na każdy z sąsiednich stosów. Zobacz przykład na rysunku 2. Stos p ma dwóch sąsiadów, p-1 oraz p+1, o ile 1 < p <N, ma sąsiada 2, gdy p=1, oraz sąsiada N-1, gdy p=N. Zauważ, że aby można było wykonać taki ruch, stos p musi zawierać co najmniej 2m krążków, jeśli ma dwóch sąsiadów i musi zawierać przynajmniej m krążków, jeśli ma tylko jednego sąsiada.

Celem gry jest "spłaszczenie" wszystkich stosów przez zrównanie liczb zawartych w nich krążków w możliwie najmniejszej liczbie ruchów. W przypadku gdy istnieje wiele rozwiązań, masz podać jedno z nich.

limgflat.1Rys. 1. Piec stos... 

limgflat.2Rys. 2. Te same s... 

Założenia

Wejście

Plikiem wejściowym jest plik tekstowy flat.inp. Zawiera on dwa wiersze.

Wyjście

Plikiem wyjściowym jest plik tekstowy flat.out.

Ruchy muszą być zapisane w pliku wyjściowym w takiej samej kolejności, w jakiej są wykonywane. Tak więc pierwszy ruch powinien być zapisany w drugim wierszu pliku.

Przykład

flat.inp:

5
0 7 8 1 4

flat.out:

5
5 2
3 4
2 4
3 1
4 2

Ocena

Limit na czas działania dla Twojego programu wynosi 3 sekundy.

Aby uzyskać pełną liczbę punktów, A, liczba Twoich ruchów, x, nie może przekraczać pewnej liczby B ustalonej przez program oceniający. B nie musi być równe minimalnej liczbie ruchów. W rzeczywistości B jest ustalane na podstawie liczby ruchów pewnej bardzo prostej strategii (unikającej zbędnych ruchów) oraz średniej liczby krążków na stosie. W tym zadaniu można otrzymać część punktów za pojedynczy test. Punkty, które otrzymasz zostaną wyliczone jako zaokrąglenie do najbliższej liczby całkowitej wartości określonej następującą formułą:

 matrix  A & rm jeąli & x le ...