¡Hola chicos! Muchas gracias por participar. Esta es la primera ocasión en la que el Club de Programación Competitiva (CPCFI) escribe problemas originales para un concurso de nivel medio superior, y nos hizo muchísima ilusión que los resolvieran.
Para quienes tengan la curiosidad, todos los protagonistas de los problemas son personas que pertenecen al CPCFI. Somos una comunidad muy unida y nos hace mucha gracia verlos como protagonistas los problemas. Esperamos que en algún momento de sus carreras consideren unirse al club, que siempre tendrá las puertas abiertas para gente que busque desafíos complicados y una comunidad unida que los apoyará incondicionalmente.
Les deseamos lo mejor en su formación personal y profesional y esperamos verlos de nuevo en la fase final.
Agradecimientos especiales a RacsoFractal, quién hizo posible la creación de estos problemas para el concurso y me invitó a colaborar en este desafío tan grande para el CPCFI.
También queremos agradecer a todos los testers de los problemas, que nos ayudaron a afinar detalles y a corregir errores: ELeon, AlexJzG, lamocha, Nitter, salazarislas.daniel, Warddd,AldoEZ_21, zum, eve181836
671145B. Entrenamiento de equipo II
Este problema es de implementación. Supongamos que el input se guarda en tres arreglos: m, a y l, uno con el registro de cada competidor.
La forma más lenta de hacerlo es en complejidad $$$O(N^2)$$$, si para el i-ésimo día se calcula la suma acumulada recorriendo desde el día 1 hasta el i. Teniendo la suma acumulada de los problemas resueltos por cada competidor hasta el i-ésimo día. Teniendo las tres sumas, se puede imprimir el nombre de cualquier miembro del equipo cuya suma acumulada sea la máxima entre los tres.
Aunque por las restricciones del problema esta estrategia es válida, también se puede llevar la suma acumulada in situ para cada iteración. Otra forma de hacerlo, es aplicando la técnica prefix sum, que no es más que una suma de prefijos, con los arreglos.
Sin importar la forma de ver el máximo acumulado para el i-ésimo día, para determinar al MVP del equipo basta con llevar la cuenta de cuántas veces cada miembro del equipo ha sido el miembro con mayor rendimiento. Es decir, cuando se detecte que el acumulado de alguien del equipo es el máximo de los tres hasta el día i, incrementar también su cuenta de MVP. Si para un día i, el máximo de problemas sacados por Mikel es max, pero también Arnau y Leon tienen max problemas hechos hasta el día i, el contador de MVP de los tres se incrementa.
Teniendo estos contadores, hay que ver cuál es el mayor tras todos los días de entrenamiento e imprimir cualquiera que sea válido.
La complejidad final alcanzable es $$$O(N)$$$, como se puede ver en la siguiente solución.
671145C. Lanzadardos inexperto
671145D. El billar no es de vagos II
Para este problema no es necesario estar familizarizado con los conceptos físicos presentados. Con leer atentamente el statement, el lector podrá hacer una serie de sustituciones entre las fórmulas brindadas que llevarán a una expresión final sencilla de programar.
La distancia total recorrida por la bola de billar no es más que la suma de la distancia recorrida por la bola en cada tiro, lo cual se puede calcular despejando la variable 'd' de la ecuación brindada del MRUA:
De aquí se deduce que la velocidad final es cero, pues Gus siempre espera a que la pelota se deje de mover antes de darle el siguiente golpe:
La aceleración se puede calcular como dice en el enunciado, de la segunda ley de Newton como el cociente entre la fuerza de fricción generada entre la bola de billar y la mesa, entre la masa de la bola de billar. Sustituyendo variables tenemos que:
La velocidad inicial se puede calcular tal cual dice el enunciando:
Sustituyendo todo en el despeje de la distancia inicial, tenemos que:
Simplificando:
Fórmula que ya es bastante sencilla de programar.
Por otro lado, para calcular la distancia final de la bola de billar se pide, de nuevo, sumar el desplazamiento en los rectangulares que tuvo la bola tras cada tiro de Gus. Lo cual se puede hacer tal cual las fórmulas presentadas.
La precisión para este problema es muy chica, dado que no se espera que el lector esté familiarizado con el manejo de variables reales de alta precisión, como se puede ver en la siguientes soluciones, utilizar variables de tipo float será suficiente.









Auto comment: topic has been updated by GusTimeTraveler (previous revision, new revision, compare).
Auto comment: topic has been updated by GusTimeTraveler (previous revision, new revision, compare).
Auto comment: topic has been updated by GusTimeTraveler (previous revision, new revision, compare).