Saltar al contenido principal

Material de ejemplo

Problemas de ejemplo a los que los estudiantes pueden enfrentarse durante el taller. Cada problema incluye una descripción detallada, límites de tiempo y memoria, así como casos de prueba para practicar. Cada problema deben resolverlo usando el lenguaje de programación C++.

Calculadora

  • ⏱️ 1 segundo
  • 💾 256 megabytes

Llegaste a la final de las Olimpiadas de Calculadoras Increíbles (OCI) y tu tarea ahora es crear una calculadora que soporte las cuatro operaciones aritméticas básicas: adición, sustracción, multiplicación y división entera.

Entrada

La primera línea de la entrada contiene un entero x, un caracter op y un entero y, separados por espacios. (1 ≤ x, y ≤ 10^4, op es +, -, * o /).

Salida

La salida debe consistir en una línea con un entero: el resultado de la operación.

Puntajes

  • 50 puntos: La operación será + o -.
  • 50 puntos: Sin restricciones adicionales.

Ejemplos

Entrada

5 + 12

Salida

17

Entrada

12 - 5

Salida

7

Entrada

7 * 4

Salida

28

Entrada

18 / 3

Salida

6

Nota

Nota que la división es entera, que es lo mismo que truncar el resultado de una división normal.

Punto y las búsquedas

  • ⏱️ 1 segundo
  • 💾 256 megabytes

Punto tiene una lista de N números enteros ordenados de manera no decreciente. Recibirá Q consultas, cada una consistiendo en un número entero. Cada consulta consiste en que Punto necesita encontrar el índice de la primera ocurrencia del número de manera eficiente.

Entrada

La primera línea contiene dos enteros N y Q (1 ≤ N, Q ≤ 10^5).

La segunda línea contiene N enteros separados por espacios, cada entero con un valor entre 1 y 10^9.

Las siguientes Q líneas contienen cada una un entero entre 1 y 10^9, representando una consulta.

Salida

Para cada consulta (en el orden en que fueron recibidas), debe mostrar por pantalla una línea con un único entero: el índice de la primera ocurrencia del elemento consultado o -1 si no está presente en la lista. El valor del índice debe ser entre 1 y N.

Puntajes

  • Subtarea 1 (10 puntos): 1 ≤ N, Q ≤ 10.
  • Subtarea 2 (20 puntos): 1 ≤ N ≤ 100, 1 ≤ Q ≤ 1000.
  • Subtarea 3 (70 puntos): 1 ≤ N, Q ≤ 10^5.

Ejemplo

Entrada

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

Salida

9
-1
3

Visualizo IV

  • ⏱️ 1 segundo
  • 💾 256 megabytes

Alejandra tiene una gran pasión por recolectar cartas y disfruta guardar cada nueva adquisición en su colección. Además, le encanta hacer preguntas sobre su colección, especialmente sobre cuál fue la i-ésima carta que añadió.

Como está muy ocupada buscando nuevas cartas, te pide ayuda para desarrollar un programa que le permita almacenar las cartas que posee y responder rápidamente a preguntas sobre cuál fue la i-ésima carta añadida.

Entrada

La entrada del programa consiste en los siguientes elementos:

  • Un entero n (1 ≤ n ≤ 10^5), que indica la cantidad de cartas que Alejandra ha encontrado.
  • Una segunda línea con n enteros separados por espacios, donde cada entero representa el valor de una carta. El primer número de esta línea corresponde a la primera carta que Alejandra añadirá a su colección, el segundo al valor de la segunda carta, y así sucesivamente hasta la n-ésima carta. Cada carta tiene un valor comprendido entre 1 y 10^6.
  • Una tercera línea con un entero q (1 ≤ q ≤ 10^5), que indica la cantidad de preguntas que Alejandra desea realizar sobre su colección.
  • Finalmente, le siguen q líneas, donde cada línea contiene un entero i, que representa la pregunta de Alejandra sobre cuál fue la i-ésima carta añadida a su colección. El valor de i puede ir entre 0 y n - 1.

Salida

La salida debe consistir de q líneas, donde cada línea debe contener un entero, correspondiente al valor de la i-ésima carta.

Puntajes

  • 50 puntos: 1 ≤ n ≤ 4.
  • 50 puntos: Sin restricciones adicionales.

Ejemplos

Entrada

3
3 3 3
3
0
1
2

Salida

3
3
3

Entrada

4
1 10 9 2
1
2

Salida

9

Entrada

4
3273 1237 231 1237
2
0
3

Salida

3273
1237

Entrada

4
1 2 1 2
3
0
0
0

Salida

1
1
1