QOJ.ac

QOJ

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

#20098. Mantén el orden

Estadísticas

Gon tiene una permutación $a=(a_1,a_2,\ldots,a_n)$ de los enteros entre $1$ y $n$, ambos inclusive, y quiere ordenarla de forma creciente. Sin embargo, ordenar es trivial: ¡cualquiera puede ordenar un arreglo!

Por eso, Gon decide utilizar únicamente la siguiente operación para ordenar:

  • Seleccionar dos índices $\ell$ y $r$ ($1\le\ell\le r\le n$), de modo que el subarreglo $(a_\ell,a_{\ell+1},\ldots,a_r)$ esté ordenado, ya sea de forma creciente o decreciente.

  • Invertir el subarreglo desde $\ell$ hasta $r$.

Por ejemplo, dada una permutación $a=(3,2,1)$, Gon puede ordenarla con una operación de la siguiente manera:

  • Seleccionar $\ell=1,r=3$.

  • Invertir el subarreglo $(a_1,a_2,a_3)$ para obtener $a=(1,2,3)$.

Observa que, si $a=(3,1,2)$, Gon no puede seleccionar $\ell=1,r=3$, ya que el subarreglo desde $1$ hasta $3$ no está ordenado.

Como el cumpleaños de Gon es el 19 de enero, Gon quiere utilizar como máximo $191$ operaciones. Esto resulta no ser trivial. ¡Ayuda a Gon!

Entrada

La primera línea de la entrada contiene un único entero $n$ ($1\le n\le100$).

La segunda línea de la entrada contiene $n$ enteros $a_1,a_2,\ldots,a_n$. Se garantiza que $a$ es una permutación de los enteros entre $1$ y $n$, ambos inclusive.

Salida

Imprime en la primera línea un único número $k$ ($0\le k\le191$): el número de operaciones que quieres utilizar.

En cada una de las siguientes $k$ líneas, imprime dos enteros $\ell$ y $r$ ($1\le\ell\le r\le n$) que describan las operaciones. El subarreglo entre $\ell$ y $r$ debe estar ordenado antes de esta operación.

Tras $k$ operaciones, la permutación $a$ debe estar ordenada de forma creciente. En otras palabras, $a_i=i$ para todo índice válido $i$. Observa que no necesitas minimizar el número de operaciones.

Se garantiza que existe una solución. Si hay varias soluciones, puedes imprimir cualquiera de ellas.

Ejemplos

Entrada 1

3
3 1 2

Salida 1

7
1 1
2 2
3 3
1 2
2 3
1 3
1 3

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.