Printing Sequences.


Submit solution

Points: 100 (partial)
Time limit: 1.0s
Memory limit: 256M

Author:
Problem type

Bessie está aprendiendo a programar usando un lenguaje de programación simple. Primero define un programa válido y luego lo ejecuta para producir una secuencia de salida.

Definición:

  • Un programa es una secuencia no vacía de instrucciones.
  • Una instrucción puede ser de la forma "PRINT c", donde c es un número entero, o "REP o", seguida de un programa y finalizada con "END", donde o es un número entero de al menos 1.

Ejecución:

  • Ejecutar un programa significa ejecutar sus instrucciones en secuencia.
  • Ejecutar la instrucción "PRINT c" agrega c a la secuencia de salida.
  • Ejecutar una instrucción que comienza con "REP o" ejecuta el programa interno un total de o veces en secuencia.

Un ejemplo de un programa que Bessie sabe escribir es el siguiente:

REP 3
    PRINT 1
    REP 2
        PRINT 2
    END
END

Este programa genera la secuencia [1,2,2,1,2,2,1,2,2].

Bessie quiere generar una secuencia de N (1 \leq N \leq 100) números enteros positivos. Elsie la desafía a usar como máximo K (1 \leq K \leq 3) instrucciones "PRINT". Bessie puede usar tantas instrucciones "REP" como desee. Además, cada número entero en la secuencia es como máximo K.

Para cada uno de los T (1 \leq T \leq 100) casos de prueba, determina si Bessie puede escribir un programa que genere la secuencia dada utilizando como máximo K instrucciones "PRINT".

Entrada

La primera línea contiene T.

La primera línea de cada caso de prueba contiene dos enteros separados por espacio, N y K.

La segunda línea de cada caso de prueba contiene una secuencia de N enteros positivos, cada uno como máximo K, que representa la secuencia que Bessie quiere generar.

Salida

Para cada caso de prueba, imprime "YES" o "NO" (sensible a mayúsculas y minúsculas) en una nueva línea.

Ejemplo #1 de Entrada

2
1 1
1
4 1
1 1 1 1

Ejemplo #1 de Salida

YES
YES

Para el segundo caso de prueba, el siguiente código genera la secuencia [1,1,1,1] usando solo una instrucción "PRINT".

REP 4
    PRINT 1
END

Ejemplo #2 de Entrada

11
4 2
1 2 2 2
4 2
1 1 2 1
4 2
1 1 2 2
6 2
1 1 2 2 1 1
10 2
1 1 1 2 2 1 1 1 2 2
8 3
3 3 1 2 2 1 2 2
9 3
1 1 2 2 2 3 3 3 3
16 3
2 2 3 2 2 3 1 1 2 2 3 2 2 3 1 1
24 3
1 1 2 2 3 3 3 2 2 3 3 3 1 1 2 2 3 3 3 2 2 3 3 3
9 3
1 2 2 1 3 3 1 2 2
6 3
1 2 1 2 2 3

Ejemplo #2 de Salida

YES
NO
YES
NO
YES
YES
YES
YES
YES
NO
NO

Para el primer caso de prueba, el siguiente código genera la secuencia [1,2,2,2] usando solo 2 instrucciones "PRINT".

PRINT 1
REP 3
    PRINT 2
END

Para el segundo caso de prueba, la respuesta es "NO" porque es imposible generar la secuencia [1,1,2,1] usando como máximo 2 instrucciones "PRINT".

Para el sexto caso de prueba, el siguiente código genera la secuencia [3,3,1,2,2,1,2,2] usando solo 3 instrucciones "PRINT".

REP 2
    PRINT 3
END
REP 2
    PRINT 1
    REP 2
        PRINT 2
    END
END

USACO 2025 February Contest, Bronze Problem 3. Printing Sequences.


Comments

There are no comments at the moment.