Entradas del blog omegaUp
Revisión de código en envíos de cursos
Nos complace anunciar la liberación de una nueva funcionalidad llamada “Revisión de código en envíos de cursos”. Esta herramienta permitirá a las personas organizadoras de cursos brindar retroalimentación directamente en el código enviado por sus estudiantes, agilizando así el proceso de revisión. Antecedentes Anteriormente, en los cursos de omegaUp, solo se disponía de un campo general para escribir retroalimentación por cada envío realizado por la persona estudiante. Esto impedía que la persona organizadora contara con las herramientas necesarias para detallar adecuadamente los comentarios.
19 de agosto de 2024
El nuevo ranking de contribuidores de omegaUp
En omegaUp, reconocemos y valoramos el impacto positivo de aquellos que contribuyen al desarrollo de nuestra plataforma. Presentamos con entusiasmo nuestro renovado sistema de clasificación, diseñado para destacar la dedicación y habilidades de aquellos que han ayudado a dar forma a omegaUp, ya sea creando desafiantes problemas de programación o contribuyendo de diversas formas. En esta ocasión anunciamos el nuevo ranking de nuestros contribuidores más activos del mes en omegaUp:
3 de febrero de 2024
Soluciones de problemas en omegaUp
En este post queremos describirles cómo ver soluciones a los problemas en omegaUp. Para los autores de problemas también daremos algunos detalles sobre como agregar las soluciones a sus problemas. En la vista de problema, en la parte superior podemos ver dos pestañas, Problema y Ver Solución. Si ya resolviste el problema y quieres comparar tu solución con la solución oficial, al dar click en la pestaña de Ver Solución, verás el botón de Ver Solución con el icono de un candado abierto.
29 de octubre de 2023
Concursos con Subtareas
Nos es grato informar que hemos liberado una nueva modalidad de concursos llamada “Concursos con subtareas”, para poder cubrir satisfactoriamente las necesidades de los concursos realizados en la Olimpiada Internacional de Informática (IOI por su siglas en inglés), el cual ha modificado la fórmula para calcular el puntaje asignado a un concursante para un problema en específico. AntecedentesAnteriormente en omegaUp sólo se contaba con dos distintos tipos de concursos: Calificación parcial: En este modo de concursos se tomaba en cuenta el mayor puntaje de la suma de todos los grupos de casos. El modo era utilizado para los concursos de la OMI, entre otros.
15 de agosto de 2023
Ranking de contribuidores
En omegaUp queremos reconocer a todas las personas que usan la plataforma. En este artículo describiremos el “Ranking de contribuidores”, que busca distinguir a contribuidores que han publicado buenos problemas en omegaup.com. La métrica para cada usuario, llamada author_score, es calculada a través de la siguiente fórmula: $$author_score = sum(problem-quality).$$ En resumidas cuentas, la puntuación de contribuidor de cada persona, será igual a la suma de los puntos de calidad de cada uno de sus problemas. Estos puntos de calidad son los calculados a través del feedback de calidad que deja cada usuario cuando califica los problemas que resolvió o intentó resolver.
11 de agosto de 2023
Concursos por equipos
Nos es grato informar que hemos liberado una nueva funcionalidad llamada “Concursos por equipos”, para poder atender los concursos con formato de ICPC, los cuales se realizan en equipos. Para que esta nueva modalidad de concursos pueda utilizarse, también se han liberado algunas características extras que se describirán más adelante. Si estás familiarizado con la plataforma encontrarás similitud con funcionalidades que ya existen desde hace tiempo. Si no es el caso, comenzamos con el primer paso.
24 de marzo de 2022
Verano de Programación de Google con omegaUp
Verano de Programación de Google con omegaUp¿Te interesaría trabajar en un proyecto de Ingeniería de Software para omegaUp en un programa patrocinado por Google? Te invitamos a aplicar a Google Summer of Code 2022. ¿Qué es Google Summer of Code? Google Summer of Code, o GSoC, es un programa anual internacional en el cual Google premia con estipendios económicos a aquellas personas que sean aceptadas en el programa y completen exitosamente un proyecto de contribución a un proyecto de código abierto. Este año omegaUp forma las organizaciones elegibles.
20 de marzo de 2022
Bases de Liga de Programación de omegaUp
omegaUp Invita a todos los estudiantes de nivel media superior y superior a participar a la 2° edición de la Liga de programación omegaUp. Reglas: Deben ser estudiantes de Preparatoria, Licenciatura, Maestría, Doctorado o Postdoctorado. Los puntos otorgados por cada problema serán tomados como parte del puntaje final. El primer AC de cada etapa recibirá 10 puntos extras. Problemas resueltos parcialmente serán tomados en cuenta. Para determinar los ganadores se utilizará como criterio el número de puntos obtenidos y como segundo criterio el número de AC que tenga a lo largo de las etapas, es decir gana el quien tenga mayor cantidad de puntos y en caso de ser necesario mayor número de problemas resueltos correctamente.
10 de diciembre de 2021
Resolviendo problemas con un límite bajo de memoria
Gracias @Rodrigo-RCC por este aporte! El límite de memoria de un problema puede cambiar drásticamente la forma en la que podemos resolverlo. Por ejemplo, el problema https://omegaup.com/arena/problem/La-especie-dominante-en-marte nos pide encontrar el número que más se repite en una secuencia, si además sabemos que ese número aparece al menos más de la mitad de las veces. Si estamos usando C++ y conocemos relativamente bien la biblioteca estándar del lenguaje, nuestro primer intento sería algo así:
5 de diciembre de 2021
Análisis de diferencias en salidas para envíos de problemas educativos
Hemos liberado una nueva funcionalidad que será muy útil para los usuarios que comienzan a utilizar la plataforma, ya que contarán con una herramienta más para apoyarlos en su aprendizaje. Esta funcionalidad les permitirá ver un análisis de las diferencias entre las salidas que dan sus programas y las salidas oficiales para los envíos de problemas educativos. ¿En qué consiste el análisis de las diferencias? Para todos los problemas educativos que accedan vía cursos, los usuarios podrán comparar el resultado que obtuvo la salida de la solución que acaban de enviar, contra el resultado que se espera de acuerdo a los casos que subió el creador del problema.
7 de septiembre de 2020
Reglas del Coder del Mes
El reconocimiento del Coder del Mes en omegaUp se hizo con el objetivo de reconocer a coders activos en la plataforma. A continuación listamos las reglas del programa. Existen dos programas de Coder del Mes: Coder del Mes para Ellas y Coder del Mes General. Cada inicio de mes se publicarán los ganadores de los dos programas de Coder del Mes. La ganadora del Coder del Mes para Ellas será elegida entre las usuarias que se han identificado con el género femenino en su perfil. El Coder del Mes general no hará distinción de género. Las personas ganadoras serán publicadas en la página principal de omegaUp.com durante el mes correspondiente. La persona con el mayor puntaje acumulado durante el mes resolviendo problemas con distintivo de calidad* será el ganador del Coder del Mes General. La usuaria con el mayor puntaje acumulado durante el mes resolviendo problemas con distintivo de calidad* será la ganadora del Coder del Mes para Ellas. Debes seguir el Código de Conducta de omegaUp. Es posible que se haga una publicación en redes sociales felicitando a los ganadores. Esto dependerá de los recursos disponibles de omegaUp. Dicha publicación incluye compartir información como el alias del usuario y el nombre del usuario. Los administradores de los programas tienen el derecho de determinar la honestidad de los usuarios en sus soluciones utilizando diferentes métodos y descalificar al usuario si se encuentran violaciones. Cualquier violación a estas reglas dará lugar a disposiciones de penalización, incluyendo descalificación al Rank General o a los programas de Coder del Mes. *Los problemas con distintivo de calidad son aquellos que muestran EN el título del problema el siguiente icono: Dicho distintivo es asignado por el departamento de Educación de omegaUp.
23 de abril de 2020
Código de Conducta en omegaUp
omegaUp es una plataforma educativa y creemos que debemos fomentar un ambiente con respeto y la mismas oportunidades para todos. Por ello creamos el siguiente Código de Conducta, que debes cumplir para utilizar omegaUp.com. En general y en especial en los concursos, cursos, el blog y redes sociales de omegaUp se crea una comunidad, donde se espera que los usuarios actúen con respeto y empatía hacia los demás. Todos los códigos enviados por los usuarios deben estar dirigidos a resolver el problema y no a violar las reglas o desestabilizar el sistema (el juez). Los usuarios no deben participar en ninguna actividad injusta que influya en los resultados propios o de cualquier otro usuario. Se debe asegurar con el profesor del curso, u organizador del concurso, si está permitido el uso de libros, notas, herramientas y código que hayas escrito previamente. Todos deben respetar los derechos de autor. Esto significa que, si se utiliza código de otra persona, el usuario debe contar con permiso explícito del autor original para hacerlo. Igualmente, los usuarios que desean añadir un problema de un tercero a la plataforma, deben seguir las reglas de reproducción o contar con permiso explícito del autor para hacerlo. El contenido que aporten los usuarios a la plataforma no debe ser inapropiado, ni ofensivo. Esto quiere decir que no se permite contenido que promueva insultos, acoso de ningún tipo, comentarios despectivos o publicar información personal de otros. Intentar extraer el código de otro usuario sin su permiso se considera trampa. Cualquier violación a estas reglas dará lugar a disposiciones de penalización, incluyendo descalificación al Rank General o a los programas de Coder del Mes o desactivación de la cuenta.
23 de abril de 2020
Soluciones de la Fase 2 de la Liga de Programación omegaUp
Problema A Las siguientes observaciones son claves para resolver el problema. Si $p \leq n$, entonces $(w$ % $p) < n$. Así que el máximo residuo posible es $n - 1$. Si $w$ satisface la condición del enunciado, entonces hay $n - 1$ diferentes residuos, luego los residuos son un subconjunto de $n - 1$ elementos, de la colección $\lbrace 0, 1, \ldots , n - 1\rbrace$. El mínimo común múltiplo de $1, 2, \ldots , n$ es mayor o igual al producto de los primos menores o iguales a $ n$. El producto de los primos menores o iguales a $50$ es mayor a $10^{18}$ Veamos el caso donde $0$ no forma parte de los residuos. De 1, vemos que
19 de abril de 2020
Todos los videos del curso de Introducción la Programación con C++
Actualización 10/04/20: El curso ha terminado y este post incluye los 11 videos. Como parte de la iniciativa #QuédateEnCasaConOmegaUp estuvimos impartiendo un curso de Introducción a C++ en vivo a través de Facebook Live. El material del curso está disponible de forma abierta y gratuita en la plataforma de omegaUp y puedes acceder en este enlace (https://omegaup.com/course/introduccion_a_cpp) para ver el material y resolver los ejercicios en línea. Aquí te dejamos un enlace a todos los videos y estaremos actualizando este post con cada video nuevo en la serie:
7 de abril de 2020
Soluciones de la Fase 1 de la Liga de Programación omegaUp
Problema A Para este problema, consideramos un arreglo de ocurrencias $O$ sobre los elementos del arreglo. De modo que la respuesta está dada por $\sum\limits_{i=A}^B O_{i}$ Problema B Si consideramos el mismo arreglo de ocurrencias $O$ sobre los elementos del arreglo, la respuesta está dada por $O_k$. Problema C Podemos generar todos los elementos de la secuencia de Fibonacci hasta $30000$, y guardarlos en un mapa $M$, de modo que $M_k = 1$ si $k$ es un elemento de Fibonnaci, y $M_k = 0$ en caso contrario. Generamos la respuesta simplemente iterando desde $i = 4$ hasta $i = N - 1$, e imprimimos $i$ si $M_i = 0$.
1 de abril de 2020
Quédate en casa con omegaUp - nuestra respuesta al COVID-19
Querida comunidad omegaUp: La epidemia del COVID-19 ha causado cambios importantes en nuestra vida diaria, trabajo, escuela y familia. Para ayudar a manejar el Distanciamiento Social a toda nuestra comunidad, hemos creado la campaña Quédate en casa con omegaUp: una serie de iniciativas educacionales en línea para apoyar la continuidad de la educación tecnológica en Latinoamérica. 1. Tutoriales para Profesores: ¿Cómo usar omegaUp para dar clases de programación en línea? omegaUp.com es una plataforma gratuita en Español que ayuda a estudiantes a mejorar sus habilidades en Ingeniería de Software resolviendo retos de programación de una forma divertida y competitiva. Profesores de más de 100 escuelas de nivel Medio Superior y Superior en México y Latinoamérica usan la plataforma para dejar tareas y exámenes con retos de programación que los alumnos pueden resolver en línea.
23 de marzo de 2020
Administración de Identidades
Hemos liberado una nueva funcionalidad en omegaUp para que puedas administrar identidades dentro de un grupo. Si has sido organizador de un concurso o curso, seguramente has requerido de la ayuda de algún miembro de omegaUp para dar de alta las cuentas de los usuarios que participarán en el evento que organizaste con este script. Con esta nueva funcionalidad serás capaz de realizar todas las acciones por tu cuenta. ¿Qué es una Identidad?Una identidad en omegaUp es una cuenta con los privilegios suficientes para ingresar a un curso o concurso para el cual haya sido creada. Anteriormente, para que un usuario pudiera ingresar al curso o concurso, era necesario hacer los cambios necesarios en el código descrito en el párrafo anterior.
8 de febrero de 2020
El nuevo ranking de escuelas de omegaUp
Rankings de escuelas Queremos presentarles el nuevo ranking de escuelas de omegaUp, tanto mensual como histórico. Cada uno de ellos funciona de manera similar, salvo por algunas variaciones que detallaremos a continuación: El score de una escuela para el ranking mensual, se obtiene a partir de la suma de los puntos que provee cada problema que los usuarios de la escuela han resuelto dentro del mes actual. Contamos los puntos de cada problema una única vez, por lo que si 10 usuarios de una misma escuela, resolvieron el mismo problema que otorgaba 0.5 puntos, la contribución de éstos es 0.5 y no 5 (0.5*10).
5 de febrero de 2020
Insignias de Usuario en omegaUp
Estimados coders, Tenemos el agrado de presentarles una nueva característica de la plataforma: “Insignias de Usuario”. Estas insignias son pequeños reconocimientos para los diversos logros alcanzados por ustedes y se encuentran ya disponibles en la plataforma. Para ver las insignias que has obtenido, simplemente debes acceder a tu perfil en omegaUp, ahora existe una nueva sección donde se listarán todas tus insignias conseguidas: Además, si quieres ver todas las insignias existentes, solo debes hacer click en el enlace Ver todas, que se encuentra al costado del número de insignias obtenidas. Recuerda que al poner el mouse sobre el ícono de la insignia, podrás ver la descripción de lo que tienes que hacer para poder obtener dicha insignia. Hay insignias que tienen un ícono sombreado por completo de negro, eso significa que aún no la has obtenido, ¡podrás ver el ícono de la insignia una vez la obtengas!
30 de octubre de 2019
¡Muchas gracias! - 2da Gala Anual de omegaUp
Prof. Pedro Fuentes dando un gran discurso en la 2da Gala de omegaUp. Queridos amigos, Gracias a la increíble generosidad de todos los participantes, nuestra 2ª Gala Anual celebrada el 19 de Octubre trajo casi $ 40,000 en fondos que serán utilizados para ayudarnos a mejorar omegaUp.com como una plataforma de aprendizaje gratuita para llegar a más estudiantes, y continuar nuestros programas sociales.
26 de octubre de 2019
Guía para la Propuesta de Insignias en omegaUp
Tú también puedes proponer nuevas insignias para la plataforma, simplemente debes tomar en cuenta las consideraciones que se detallan a continuación y abrir un issue en nuestro repositorio en Github haciendo clic aquí. Consideraciones: Las insignias en omegaUp son una manera de reconocer logros pequeños pero significativos, conseguidos por los usuarios al usar la plataforma. En dicho sentido, no está permitido proponer insignias ad-hoc, cuya posibilidad de ser conseguidas involucre aspectos que van más allá de la habilidad del estudiante o el uso que éste le da a la plataforma. Por ejemplo: Insignia por haber ganado un concurso en Enero Insignia por tener un nombre de usuario menor a 5 caracteres
8 de octubre de 2019
Reporte anual de actividades 2019
“Yo sí creo que omegaUp me ayudó a llegar aquí [Microsoft], porque fue la primera plataforma que usé, y por bastante tiempo, para aprender las bases; y eso realmente cambió el destino de mi vida y para dónde fue mi camino” - Elsy Pinzón, Software Engineer en Microsoft de Yucatán, México. Queridos amigos,Cuando escribimos la primer línea de código de omegaUp.com 8 años atrás, estábamos cambiando la industria del software en México, pero no lo sabíamos aún. El 2019 marcó el tercer año de operaciones desde que omegaUp se convirtió en una asociación sin fines de lucro ( registro 501(c)(3) en Estados Unidos) con la misión de construir el camino del mejor talento en Ingeniería de Software en América Latina, ofreciendo una plataforma de aprendizaje accesible y programas sociales.
1 de octubre de 2019
El Nuevo Buscador de Problemas de omegaUp
Usuarios de omegaUp: Hemos creado un Asistente de búsqueda de problemas. Aprovechando las etiquetas y puntuaciones de calidad y de dificultad que ustedes han venido otorgándole a los problemas de la plataforma, hemos implementado este nuevo buscador que permite filtrar los problemas que les interesen en base a diversos temas y la dificultad que éstos deberían poseer. El Asistente de búsqueda de problemas es una alternativa más fácil de usar para usuarios iniciantes de omegaUp y permite que todos puedan mejorar sus habilidades de programación en tópicos específicos.
10 de mayo de 2019
Concursos Virtuales
¿Te gustaría revivir un concurso de programación que ya pasó? ¿Te gustaría ver cómo se mueve la tabla de posiciones en tiempo real mientras vas subiendo tus soluciones? ¿Te gustaría saber cómo te “hubiera ido” en “aquél concurso” al que no pudiste ir? ¡El futuro es hoy! Todo esto ya es posible en omegaUp gracias a la nueva funcionalidad de “concursos virtuales”. Para activar esta nueva funcionalidad simplemente elige un concurso en la arena y selecciona “Concurso virtual”, el concurso empezará y la lista de posiciones se irá actualizando conforme los participantes del concurso fueron subiendo sus soluciones, así podrás saber cómo te va con respecto a los competidores que participaron en el concurso.
1 de marzo de 2019
Concursos en Modo Virtual
Estimados usuarios de omegaUp Estamos muy felices de anunciar que hemos implementado una nueva funcionalidad de concursos en modo virtual en omegaUp :) ¿Qué es un concurso en modo virtual? Concursos en modo virtual te permite reproducir un concurso pasado en un modo especial que imita el concurso real como sucedió. Con el scoreboard reproduciéndose en sincronía con el concurso original. Estos son los pasos a seguir para crear y participar en un concurso en modo virtual:
7 de diciembre de 2018
Categorías omegaUp
Conoce las Categorías de Usuarios de omegaUp Hemos asignando una categoría a cada usuario de omegaUp. La categoría de cada usuario depende su posición actual en el ranking de omegaUp como se muestra a continuación: El top 1% de usuarios mejor posicionados en el rank obtiene la categoría ω (“omega pequeña”) y color rojo. El top 9% de usuarios siguientes obtiene categoría Ω (“omega grande”) y color amarillo. El top 15% de usuarios siguientes obtiene categoría Θ (“zeta” o “theta”) y color azul. El top 35% de usuarios siguientes obtiene categoría Ο (“ómicron grande”) y color verde. El top 40% de usuarios siguientes obtiene categoría ο (“ómicron pequeña”) y color gris.
1 de mayo de 2018
Historias omegaUp 2018
Convocatoria“Historias omegaUp 2018” Convocamos a nuestra comunidad de usuarios, tanto alumnos como profesores, a que nos compartan cómo utilizan omegaUp en su vida diaria. Los formatos pueden ser: un video corto o un texto con fotografías. Muéstranos tu comunidad y los lugares donde utilizas omegaUp: escuela, hogar, cibercafé, etc. En tu historia puedes incluir temas como: Para ti, ¿qué significa programar? ¿Cuáles son tus sueños profesionales? ¿En este momento de tu vida qué herramienta te hace falta para acercarte a esos sueños?
18 de marzo de 2018
Ranking de Escuelas en omegaUp
Uno de los principales enfoques de nuestro equipo este 2017 ha sido facilitar el uso de omegaUp en las escuelas. Previamente anunciamos el lanzamiento de omegaUp Escuelas, un conjunto de funcionalidades que ayuda a los profesores a administrar cursos dentro de la plataforma y crear tareas y exámenes. En esta ocasión anunciamos el nuevo ranking de escuelas más activas del mes en omegaUp: ¿Cómo funciona?La intención del ranking de escuelas es fomentar la participación activa de las escuelas en omegaUp. Para el mes en turno, calculamos el número de usuarios activos y problemas distintos resueltos de cada escuela. El ranking colocará a la escuela con mayor número de usuarios activos en el primer lugar y el número de problemas distintos resueltos se usará como criterio de desempate.
18 de junio de 2017
Se realiza la 1era Competencia Peruana de Informática Online en omegaUp
1ra Competencia Peruana de Informática Online El pasado domingo 28 de mayo de 2017 se realizó la 1era Competencia Peruana de Informática Online (CPIO). Organizada por la Federación Olímpica Peruana de Informática (FOPI), la CPIO es la primera competencia en su tipo que convoca a alumnos pre-universitarios de todo el Perú para conformar la delegación peruana rumbo a la Competencia Iberoamericana de Informática y Computación (CIIC) 2017**.**
1 de junio de 2017
Anunciando omegaUp Mentores
La misión de omegaUp es incrementar el número de ingenieros de software talentosos en América Latina, por lo que nos complace anunciar públicamente el programa omegaUp Mentores. El objetivo de este proyecto es ayudar a que nuestros usuarios más activos potencialicen sus habilidades, conectándolos con gente de experiencia que puedan servirles de guía para el desarrollo de su carrera profesional. Para ello, omegaUp ofrecerá a los coders del mes la posibilidad de recibir mentoría personalizada de ingenieros de software voluntarios con experiencia internacional, habiendo laborado en las principales empresas de tecnología del mundo, tales como Microsoft, Facebook, Amazon, Google, entre otras. Además, el usuario galardonado se hará acreedor a un diploma y un premio que podrá ser de utilidad en su desarrollo técnico o académico. Los ganadores interactúan con sus mentores mediante videollamadas y correos electrónicos. En el mes de Enero, el usuario Jorge Salazar Cruz, estudiante del CBTis 60 en Guanajuato, México, tuvo la oportunidad de hablar con Rafael Díaz, ingeniero de software en Microsoft.
19 de mayo de 2017
Anunciando omegaUp Escuelas
Con el objetivo de continuar mejorando las habilidades de programación de los estudiantes, nos emociona anunciar el lanzamiento de un nuevo proyecto: omegaUp Escuelas. Nuestro objetivo es llevar omegaUp a los salones de clases, creando una plataforma educativa, intuitiva y fácil de utilizar que se adapte a las necesidades de los profesores y estudiantes. La plataforma es una herramienta de aprendizaje que permite a los profesores enseñar a sus alumnos pensamiento algorítmico mediante la solución de problemas. Con ello, el estudiante desarrollará habilidades que le ayudarán en su crecimiento profesional.
9 de mayo de 2017
Hackathon omegaUp febrero 2017 - Resultados
En omegaUp organizamos nuestro primer Hackathon del año abierto al público, del 23 al 25 de Febrero pasados. Esta vez incluimos un divertido Bug Bash, donde invitamos a nuestros voluntarios a encontrar bugs dentro de omegaUp y reportarlos en github. Agradecemos la participación de todos los voluntarios que estuvieron involucrados. Los resultados que tuvimos fueron muy positivos: 50 bugs nuevos fueron descubiertos en el Bug Bash y se completaron 17 pull requests, muchos de ellos arreglando bugs que se encontraron en el mismo evento.
6 de marzo de 2017
Solución a "Los Callejones de Guanajuato"
Problema: Los Callejones de Guanajuato. En este problema se nos está pidiendo que, dado un grafo conexo no dirigido, encontrar un camino tal que pasemos por todas las aristas. Esta es una aplicación directa de un problema conocido de grafos, aunque no es tan común como otros problemas, estoy hablando de los ciclos Eulerianos.
2 de marzo de 2017
OmegaUp Inc
Durante más de 5 años omegaUp ha sido un proyecto de medio tiempo para nosotros. Escribir nuevas funcionalidades es difícil ya que todos tenemos otras responsabilidades de tiempo completo. Así que hace 7 meses comenzamos a considerar la opción de formalizar nuestro proyecto y convertirnos en una organización establecida legamente, que nos permitiera recibir ingresos y contratar a desarrolladores que se dedicaran de tiempo completo a diseñar y mantener la plataforma.
15 de octubre de 2016
Ibero-american Competition in Informatics 2016 - Modo Práctica
¿Quieres seguir practicando? El modo práctica del concurso Ibero-american Competition in Informatics 2016 ha sido habilitado aquí. Suerte!
26 de julio de 2016
Concursos recomendados
Respondiendo a los comentarios que hemos recibido sobre la organización de la lista de concursos en la Arena, hemos implementado el concepto de Concursos Recomendados: A partir de ahora tendremos una lista separada para los Concursos Recomendados actuales y pasados. Para pedir que tu concurso sea marcado como recomendado escribe un email a omegaup-soporte@googlegroups.com. Los únicos requerimientos son: Que el concurso sea formalmente establecido (sea parte de una olimpiada, concurso de ACM u algún otro concurso de programación). Que el creador del concurso se comprometa a mantenerlo en buen estado respondiendo las clarificaciones que pueda. Idealmente los Concursos Recomendados deben tener problemas nuevos aunque no es estrictamente necesario. El tamaño del concurso no importa. Concursos privados que cumplan estos requerimientos y que se planean hacer públicos posteriormente también cuentan. Esperamos sus comentarios.
15 de enero de 2016
Invasion Zombie
Hola!, este es mi primer post en Omegaup y voy a describir mi solución para el problema Invasion zombie. Hace un año encontré este problema, me pareció interesante y logre resolverlo, aunque algo tricky. Hace unos días me tope con este problema nuevamente y lo resolví por segunda ocasión, pero con una solución más simple, al menos eso creo. Primer solución La idea principal tanto en la primera como en la segunda solución es diseñar una función $latex f(d)$ que nos retorne el número de colonias infectadas después de $latex d$ días, nos interesa el mínimo valor de $latex d$ tal que el número de colonias infectadas sea mayor o igual a $latex C$. Una propiedad importante es la siguiente, $latex f(d)$ nunca decrece, es decir $latex f(d) <= f(d+1)$. Esta propiedad nos permite utilizar búsqueda binaria para encontrar las respuesta en $latex O(\lg_{2}(n))$. Diseñar una función que determine el número de colonias infectadas, dependiendo del background de cada uno, es la parte interesante, y es donde difieren las dos versiones, bueno, un poco. Este es el código de la primer versión, no voy a entrar en detalles porque ni yo me acuerdo bien que trucos aplique, pero la idea es parecida a la de la de la segunda versión, lo que cambia es la estrategia.
12 de noviembre de 2015
Solución a "Splatoon"
Problema: Splatoon. Este problema pide llevar a un inkling desde el inicio de una calle hasta el final siguiendo sus reglas de movimiento. Ignoremos por un momento el hecho de que los inklings pueden pintar el piso y con ello alterar la calle en donde se realiza la carrera. Si los inklings no tuvieran esta habilidad, se puede hacer un algoritmo de fuerza bruta intentando todas las operaciones posibles, es decir, hacer una búsqueda en amplitud para encontrar el camino más corto, en donde el estado está representado únicamente por la posición en donde se encuentre el inkling.
5 de octubre de 2015
Solución a "Los Chocolates del Agente Nieves"
Problema: Los Chocolates del Agente Nieves En este problema tenemos un tubo de chocolates los cuales se van a vender uno cada día, pudiendo vender únicamente los que están en ese momento en los extremos. El precio por vender un chocolate es igual al precio base de chocolate multiplicado por el número de días que se han vendido chocolates (empezando en 1). El objetivo es encontrar la mayor ganancia posible al vender todos los chocolates.
5 de agosto de 2015
Solución a "Temblor"
Problema: Temblor Primero que nada, tratemos de entender qué es lo que se nos pide, pues es un problema poco tradicional: Dado un mapa de a lo más 4x4, hay que dar una serie de instrucciones que, sin importar en donde te encuentres en el mapa, logre llevarte a una salida; esta secuencia además, debe de ser la más pequeña posible. Este es el caso de ejemplo: La solución correcta es ONNEE, pues con esas instrucciones, podemos salir no importando en que lugar estemos (el lugar inicial está marcado con un punto rojo):
24 de julio de 2015
IOI 2015 - Entrevista con blak_dragon1
Para terminar con la serie de entrevistas a los representantes de México en la IOI 2015, tuvimos la oportunidad de platicar con blak_dragon1 (Ángel Ortega). Esto fue lo que nos dijo: Cuéntanos cómo empezaste a programar y qué te motiva a resolver problemas: Todo empezó en un curso llamado “Aprende a Programar” para las Escuelas Secundarias Técnicas. Yo estudiaba en la Escuela Secundaria Técnica No. 37 el 1er grado, ahí fue donde me invitaron a hacer un examen para lograr un lugar en el curso, y me agradó la idea porque algo que ya me llamaba atención en esos días era el uso de la computadora. Conseguí quedarme y aquí vi un poco de lógica matemática y Karel. Esto fue el inicio de todo, nos platicaron de la Olimpiada Mexicana de Informática y que esta da pie para la International Olympiad in Informatics. Eso me emocionó bastante para seguir adelante dentro de la olimpiada estatal del Distrito Federal.
15 de julio de 2015
IOI 2015 - Entrevista con Emmanuel_Antonio
Emmanuel_Antonio será uno de los representantes de México en la International Olympiad in Informatics 2015. Tuvimos la oportunidad de entrevistarlo previo al concurso y esto fue lo que nos dijo: Cuéntanos cómo empezaste a programar y qué te motiva a resolver problemas: Empecé a programar cuando el maestro Luis Citalán me invitó a entrar al taller de la Olimpiada en la escuela. Me motiva ver a esas personas que han logrado cosas muy importantes.
14 de julio de 2015
IOI 2015 - Entrevista con charlyhlms
Esta vez tocó el turno de entrevistar a charlyhlms quién representará a México por segunda vez en la International Olympiad in Informatics. Esto fue lo que nos dijo: Cuéntanos cómo empezaste a programar y qué te motiva a resolver problemas: Empecé a programar cuando tenía 13 años, durante mi segundo año de secundaria. Estaba en el taller de Computación y a principios de ese año nos enseñaron a programar en Pascal y Karel, en ese entonces me parecía algo divertido y diferente, fue por eso que cuando me comentaron sobre la Olimpiada decidí inscribirme.
10 de julio de 2015
IOI 2015 - Entrevista con Juan_Carlos_Sigler_Priego (MEX)
Estamos inaugurando la categoría de Entrevistas en el blog de omegaUp y en esta ocasión tuvimos la oportunidad de hablar con Juan_Carlos_Sigler_Priego quien representará a México en la International Olympiad in Informatics (IOI) 2015. Cuéntanos cómo empezaste a programar y qué te motiva a resolver problemas. Empecé a programar cuando me metí al Curso de la OMI en mi Estado (Distrito Federal), más que nada me motiva el ver como todo esto le ha ayudado a ex-concursantes, gente que la contrata empresas muy importantes, como MIcrosoft y Google, aunque a mi en lo personal me gustaría formar mi propia empresa.
6 de julio de 2015
El camino de México rumbo a la IOI 2015
Un año más ha pasado y México ya tiene lista su delegación que nos representará en la International Olympiad in Informatics 2015 a celebrarse en Kazakhstan, del 26 de Julio al 2 de Agosto. A continuación presentamos la colección de exámenes y problemas que se usaron durante el preselectivo dentro de omegaUp. Esperamos que esta colección de problemas sirva de entrenamiento a futuras delegaciones de México y otros países de América Latina.
22 de junio de 2015
Privacy Policy
This Privacy Policy governs the manner in which OmegaUp collects, uses, maintains and discloses information collected from users (each, a “User”) of the https://www.omegaup.com website (“Site”). Personal identification information We may collect personal identification information from Users in a variety of ways, including, but not limited to, when Users visit our site, register on the site, fill out a form, and in connection with other activities, services, features or resources we make available on our Site.Users may be asked for, as appropriate, name, email address. Users may, however, visit our Site anonymously. We will collect personal identification information from Users only if they voluntarily submit such information to us. Users can always refuse to supply personally identification information, except that it may prevent them from engaging in certain Site related activities.
5 de junio de 2015
68 nuevos problemas de Teddy Online Judge
Ya pueden encontrar en OmegaUp 68 nuevos problemas migrados desde Teddy Online Judge. Todos estos problemas tienen el tag teddy asi que son fáciles de identificar. Aunque estos problemas tienen mucho tiempo en Teddy y han tenido mas de 15k ejecuciones en ese juez, han sido migrados de manera automática ya que Teddy usa HTML y OmegaUp usa un markup modificado, entre otros cambios interesantes. Eso quiere decir que puede haber erroes. Si encuentras uno de ellos no dudes en enviar una clarificacion.
30 de enero de 2015
Ya pueden hacer sus envíos usando Ruby
Bueno, según la plataforma ya podían hacerlo desde hace mucho. Pero como nadie lo había intentado, no descubrimos que había un bug que hacía que todos los envíos dieran JE. Disfruten usar el nuevo lenguaje!
14 de diciembre de 2014
Ya pueden filtrar los problemas por Tags
Si van a la lista de problemas, podrán notar que algunos tienen tags! Si hacen click en alguno, filtrarán la lista de problemas para que únicamente se muestren los problemas con ese tag. Si están buscando problemas de Karel, este cambio los va a hacer muy felices.
19 de octubre de 2014
Retirando C++ a favor de C++11 a finales de año
Para irse familiarizando con el lenguaje y las herramientas, asegúrense que tienen un IDE que contenga GCC versión 4.8 (o superior) y tenga la bandera -std=c++11. No deben haber problemas de compatibilidad, así que intenten mandar todos sus envíos de C++ en C++11 y háganos saber via Twitter o comentarios aquí si encuentran algún problema.
30 de septiembre de 2014
Cambios en el ranking
Continuando con los cambios en el ranking de omegaUp, a partir de hoy sólo los problemas resueltos marcados como **públicos **van a contar puntos para calcular el score. Este cambio es con la intención de hacer el ranking más justo con problemas visibles a todos. De igual forma, el **Coder del Mes **también será calculado sólo con problemas públicos. Desafortunadamente varios competidores cayeron bastantes posiciones en el ranking. Ayúdenos a convencer a su problemsetter favorito a que los problemas se publiquen al finalizar los concursos.
19 de agosto de 2014
Solución a "Jardinero"
Concurso: Preselectivo para la IOI 2015, Etapa 1, Problemset 6 Autor: Saúl Germán Gutiérrez Calderón Fuente: Saúl Germán Gutiérrez Calderón (recopilado de los ACM-ICPC World Finals 2010, problema I) En este problema, una búsqueda exhaustiva con podas bastaba para que corriera en tiempo. La búsqueda podía tener como estado al renglón y a la columna en la que se estaban, más las casillas por las que ya se había pasado más el numero de la siguiente casilla a esconderse que se necesitaba.
14 de agosto de 2014
Solución a "Contraseña Binaria"
Concurso: Preselectivo para la IOI 2015, Etapa 1, Problemset 7 Autor: Orlando Isay Mendoza Garcia Fuente: Christian Adan Hernández Sánchez Podemos ayudarnos de la imagen para comprender mejor esta explicación: img1 En ella aparecen de forma descendente a la izquierda los números pares comenzando desde el dos, y su representación binaria a la derecha. En la parte superior aparece el valor de cada cifra en decimal. Tomando en cuenta el límite del problema, sabemos que si sumamos $latex B(i)$ para cada par menor o igual a $latex N$, en el peor de los casos tendríamos que realizar 500,000,000,000,000 veces la función. Aún si lograramos calcularla en una operación nuestro programa excedería el tiempo límite.
14 de agosto de 2014
Solución a "Planetas"
Concurso: Preselectivo para la IOI 2015, Etapa 1, Problemset 4 Autor: Freddy Román Cepeda Fuente: Edgar Augusto Santiago Nieves La observación principal de este problema es que siempre hay $latex N-1$ lugares estables para el meteorito, y que cada uno de éstos se encuentra entre parejas consecutivas de planetas. Primero notemos que ningún lugar estable puede estar más a izquierda que todos los planetas, ya que la fuerza neta sobre éste lo haría moverse a la derecha. Por la misma razón, no pueden haber lugares estables después del último planeta hacia la derecha.
10 de agosto de 2014
Solución a "Poema Equino"
Concurso: Preselectivo para la IOI 2015, Etapa 1, Problemset 5 Autor: Freddy Román Cepeda Fuente: Edgar Augusto Santiago Nieves, Freddy Román Cepeda Los límites de este problema permitían hacer una búsqueda sobre todos los estados posibles de los caballos sobre el teclado, ya que si el estado es $latex (\text{poema},\text{fila caballo}_1,\text{columna caballo}_1,\text{fila caballo}_2,\text{columna caballo}_2)$, solamente hay $latex 100 \times (4 \times 10)^2 = 160,000$ estados distintos. Además, como el problema no pide la cantidad mínima de movimientos no hace falta hacer una BFS (búsqueda en amplitud), sino que una DFS (búsqueda en profundidad) utilizando el mismo stack del lenguaje es suficiente. Para simplificar la implementación, se podían utilizar varias observaciones. Particularmente, no importa qué caballo es el 1 o el 2, por lo que en vez de escribir código para mover a ambos basta con añadir una transición que cambie los roles de los caballos en cada estado. Esto además de simplificar la implementación sirve como una poda ya que ¡reduce la cantidad de estados a la mitad! (¿por qué?). También, se puede aprovechar que los operadores booleanos en C/C++ evalúan a 1 cuando son verdaderos y a 0 cuando son falsos, lo cual es bastante útil para indexar arreglos.
27 de julio de 2014
Solución a "Carretera"
Concurso: Preselectivo para la IOI 2015, Etapa 1, Examen 1 Autor: Freddy Román Cepeda Fuente: Edgar Augusto Santiago Nieves, Freddy Román Cepeda Para obtener los puntos de la primer subtarea bastaba notar que las condiciones especificadas significan que hay dos bloques de coches yendo en diferentes sentidos que inicialmente no se intersectan y eventualmente lo harán, por lo que la respuesta simplemente es el máximo de los anchos de estos bloques. Este código obtiene los primeros 30 puntos:
25 de julio de 2014
omegaUp presentado en la International Olympiad in Informatics 2014
Del 13 al 18 de Julio del 2014 se llevó a cabo la International Olympiad in Informatics (IOI) en Taipei, Taiwán. En paralelo a la IOI, el comité organiza la publicación de la revista IOI Journal donde los países participantes pueden publicar artículos sobre la olimpiada en general, tanto técnicos como reportes y explicaciones de cómo es la olimpiada alrededor del mundo. Dichas publicaciones se presentan durante la IOI, en la IOI Conference.
24 de julio de 2014
Cómo contribuir: correr y editar omegaUp en tu máquina local
omegaUp es un proyecto open source. Todo el código que se usa para correr el sitio se encuentra en github. Inclusive pueden ver los últimos cambios aquí. En este post vamos a hablar de cómo configurar tu máquina para correr localmente omegaUp y poder contribuir.
8 de julio de 2014
Trucos para ser más cool
Después de un rato de investigación y experimentación, por fin me tomo el tiempo para escribir este post y presentarles algunos trucos que, considero, podrían ayudarles a simplificarse la vida cuando programen y, obviamente, a ser mucho más cool. ¿Cansado de importar librerías como asíatico en TopCoder? ¡Aquí está la solución! Muchas veces es nefasto encontrar varios (sino es que miles) errores al compilar a causa de librerías que hemos olvidado incluir. Existe una librería que, al incluirla, agrega todas las librerías estándar de C++ a nuestro código, ¡incluso las de la STL!
7 de julio de 2014
Panel de administración para tus problemas
He visto que mucha gente sube problemas y luego hace un concurso de prueba para ver si sus soluciones funcionarían en tiempo y memoria. No más! A partir de hoy, si tú subiste un problema o te dieron permisos de administrador para él, puedes abrirlo desde Mis problemas y te mostrará todos los envíos (de todos los usuarios) y las clarificaciones que han hecho. Disfruten!
5 de julio de 2014
Ya mostramos los mejores envíos con AC en los problemas
A partir de hoy, si visitas un problema de la lista (fuera de concurso), verás que hasta abajo mostramos una tabla con los 10 usuarios junto con sus mejores envíos aceptados, ordenados por qué tan rápido terminaron. Intenta que cuando resuelvas un problema, tu nombre aparezca en esa tabla para tener todo el honor y gloria! Mejores Envíos
23 de junio de 2014
Solución a "Números Libres"
Concurso: Preselectivo para la IOI 2015, Etapa 1, Problemset 1 Autor: Freddy Román Cepeda Fuente: Edgar Augusto Santiago Nieves Para resolver este problema hacía falta tener en mente la definición de square-free. Como tanto $latex a$ y $latex b$ no son divisibles por el cuadrado de un primo, la única manera de que su producto deje de ser square-free sería que ambos compartieran un factor primo. Para obtener todos los puntos de la primer subtarea bastaba con computar $latex a \times b$ e iterar sobre todos los números menores a ese producto y revisar si es divisible por el cuadrado de alguno de ellos.
21 de junio de 2014
Solución a "Suma Manhattan"
Concurso: Preselectivo para la IOI 2015, Etapa 1, Problemset 1 Autor: Freddy Román Cepeda Fuente: Freddy Román Cepeda Este problema requería manipular con cuidado la expresión que había que computar. Recordemos que nos piden computar $latex \sum_{0 \leq i < j < N} manhattan(S_i,S_j).$ Para resolver la primer subtarea bastaba con iterar sobre todas las parejas de puntos y calcular su distancia. Esto corre en tiempo cuadrático y no es suficiente para obtener todos los puntos.
21 de junio de 2014
El nuevo ranking de omegaUp
Con este commit hemos introducido un cambio significativo en la forma de calcular el ranking general de omegaUp. Ahora no sólo es importante cuántos problemas ha resuelto un usuario sino que también estamos incluyendo la dificultad de cada uno de esos problemas. La dificultad es inversamente proporcional a la cantidad de soluciones completas (AC) que tiene ese problema. Para ser más precisos, estamos definiendo los puntos que da un problema así: $latex P_i = \frac{100}{log_2(N+1)}$, donde $latex N$ representa la cantidad de ACs que tiene un problema. Entre más ACs tenga un problema, menos puntos va a valer. Sólo estamos contando a lo más 1 AC por usuario para evitar que las soluciones de una misma persona afecten artificialmente los puntos de score del problema.
12 de junio de 2014
Preselectivo IOI 2015 - Inicio
OMI Esta semana iniciamos el preselectivo rumbo a la International Olympiad in Informatics 2015. 36 ganadores de la Olimpiada Mexicana de Informática 2014 van a participar en este proceso y pelearán por un lugar para representar a México. Este fue el mensaje de bienvenida: Estimados olímpicos, líderes y delegados, Espero que se encuentran muy bien. Los felicito por sus buenos resultados en la OMI y les doy la bienvenida al Proceso de selección para la IOI 2015 a celebrarse en Astana, Kazakhstan. Este año, los 35 mejores concursantes de la OMI pasada van a pelear un lugar entre los 4 representantes de México en la IOI.
2 de junio de 2014
Summary of mathematical background for Computer Science
Directamente del twitter feed de Computer Science (@CompSciFact) aquí hay una excelente recopilación de las matemáticas que son comunmente requeridas en ciencias computacionales: http://www.jfsowa.com/logic/math.htm
29 de mayo de 2014
El camino rumbo a la IOI 2014
Después de varios meses de preparación y selección, México está listo para participar en la IOI 2014 a celebrarse en Taiwán del 13 al 20 de Julio. Selección Mexicana de Informática 2014 De izquierda a derecha, nuestros seleccionados son: Carlos Galeana Hernández del Distrito Federal Daniel Talamás Cano de Coahuila Diego Alonso Roque Montoya de Nuevo León Jordán Alexander Salas de Coahuila Nuevamente, nuestra selección cuenta con 3 ganadores absolutos de la Olimpiada Mexicana de Informática: Jordán ganó la OMI 2014, Talamás ganó la OMI 2013 y Diego Roque ganó la OMI 2012. Les deseamos la mejor de las suertes!
28 de mayo de 2014
Yeah, science b#$ch!: Entre más omegaUp, mejores resultados
Del 1 al 6 de Mayo pasados, se llevó a cabo la Olimpiada Mexicana de Informática 2014 en Pachuca, Hidalgo. Más de 100 participantes de toda la república concursaron y omegaUp fue la plataforma de evaluación oficial (el examen del Día 1 lo puedes encontrar aquí y el de el Día 2 aquí). Por primera vez, durante el periodo 2013-2014 varios Estados, como Morelos, Chihuahua y Guanajuato empezaron a promover omegaUp entre sus olímpicos y usar nuestra plataforma para correr sus concursos locales estatales.
22 de mayo de 2014
Practicando para la OMI en omegaUp
Si estás practicando para la Olimpiada Mexicana de Informática 2014, omegaUp tiene disponibles los exámenes nacionales desde el 2009 para que intentes resolverlos. Aquí están los enlaces a los concursos de práctica OMI 2009, día 1 (Karel) OMI 2009, día 2 (Lenguaje) OMI 2010, día 1 (Karel) OMI 2010, día 2, (Lenguaje) OMI 2011, día 1 (Karel) OMI 2011, día 2 (Lenguaje) OMI 2012, día 1 (Karel) OMI 2012, día 2 (Lenguaje) OMI 2013, día 1 (Karel) OMI 2013, día 2 (Lenguaje) Nuevamente agradecemos a Kuko Lopez de la OIEG por ayudarnos a subir los problemas del 2009 al 2011.
17 de marzo de 2014
38 nuevos problemas de Karel disponibles gracias a la OIEG!
La Olimpiada de Informática del Estado de Guanajuato (OIEG), liderada este año por José Refugio López (Kuko), han hecho públicos 38 problemas de Karel para que la comunidad en general pueda practicar previo a la Olimpiada Mexicana de Informática 2014. Pueden resolver los nuevos problemas en los siguientes concursos: Nivel introductorio: ORIG2013 Karel PreEstatal Ejercicios 1 Nivel básico ORIG 2013 Examen PreEstatal Karel Nivel intermedio ORIG 2013 Concurso Estatal Mañana ORIG 2013 Concurso Estatal Tarde OIEG 2013 Examen Reclasificación Karel OIEG 2013 Preselección Práctica 01 OIEG 2013 Preselección Práctica 02 OIEG 2013 Preselección Examen 01
12 de marzo de 2014
Aventuras en el evaluador, parte 1
Como parte de los propósitos de año nuevo, me dispuse a hacer un refactor masivo del código con el cual se evalúan y ejecutan las soluciones en omegaUp. Habían muchas motivaciones para hacer la actualización: tener un sandbox más moderno, eliminar un montón de código duplicado, mejorar las pruebas, el logging, el paralelismo en los jueces, cómo se despliega el tiempo y la memoria, el desempeño de los envíos, soportar C++11 y más lenguajes. Son muchísimos cambios, así que haré dos posts explicándolos: este post se centrará en los cambios que se hicieron en la arquitectura de jueceo y el siguiente se enfocará únicamente en el nuevo sandbox.
24 de enero de 2014
Solución a "Químicos"
Concurso: Preselectivo para la IOI 2014, Etapa 1, Problemset 6 Autor: Luis Héctor Chávez (lhchavez) Fuente: Ethan Jiménez Vargas Éste es un problema que tiene una solución elegante y determinística pero requiere algoritmos avanzados bastante complicados. Lo bueno es que es posible aproximar a la solución utilizando fuerza bruta mediante backtracking. El problema nos pide encontrar una manera de asignar sustancias a los tubos y después mezclarlas con las dos operaciones disponibles (suma y diferencia absoluta) para terminar con un acomodo homogéneo de sustancias: la diferencia entre el tubo con más cantidad y con menos cantidad de sustancia debe ser lo más pequeña posible. Una manera de hacerlo es proponer un intervalo $latex [a,b]$ y ver si es posible asignar sustancias y aparear los tubos de manera que la cantidad de sustancia resultante de la mezcla en todos los tubos esté contenido dentro del intervalo. Para acelerar el proceso, puedes elegir los intervalos haciendo una búsqueda binaria de acuerdo a su ancho $latex b-a$, porque a fin de cuentas lo que nos pide el problema es precisamente el ancho mínimo. Para cada intervalo propuesto $latex [a,b]$, podemos hacer un grafo con $latex 2N$ nodos (uno para cada tubo), agregando un arco entre dos nodos $latex A$ y $latex B$ si $latex A+B\in[a,b]$ ó $latex |A-B|\in[a,b]$. Después, buscamos un apareamiento máximo en el grafo: buscamos el conjunto de arcos con cardinalidad máxima tal que cada nodo tenga a lo más un arco incidente. Esto se puede encontrar con el algoritmo de Edmonds (también conocido como el Blossom algorithm por la forma de los ciclos de longitud impar) en tiempo $latex O(|2N|^4)$, lo cual encontraría todas las soluciones en solo un par de segundos.
23 de enero de 2014
Solución a "Crucero"
Concurso: Preselectivo para la IOI 2014, Etapa 1, Problemset 4 Autor: Saúl Germán Gutiérrez Calderón Fuente: USACO Enero 2009 Gold Como se puede notar, al trazar la ruta óptima del crucero se está desperdiciando mucho espacio, y daría lo mismo si expandiésemos la isla para que no se desperdiciara espacio entre la ruta y la orilla de ésta. image002 image004 Si supiéramos cual es la ruta óptima del crucero para expandir la isla bastaría con hacer un Flood Fill para rellenar los espacios con agua que quedan dentro de la ruta.
23 de enero de 2014
Solución a "Mocha Hojas"
Concurso: Preselectivo para la IOI 2014, Etapa 1, Problemset 17 Autor: Freddy Román Cepeda Fuente: Alberto José Ramírez Valadez Para simplificar el análisis, podemos notar que la respuesta que nos piden es igual al total de los pesos de las hojas del árbol menos el total de los pesos de las hojas del árbol ya balanceado. De ahora en adelante, trataremos el problema como si tuviéramos que conseguir este segundo valor, en vez del número de operaciones. Entonces queremos maximizar el peso total del árbol balanceado, para minimizar la cantidad de operaciones.
18 de enero de 2014
Solución alternativa a "Decepción"
Concurso: Preselectivo para la IOI 2014, Etapa 1, Problemset 8 Autor: Freddy Román Cepeda Fuente: Ethan Jiménez Vargas Esta es una solución alternativa al problema. La solución pensada originalmente consiste en una búsqueda podada. Sin embargo, esta solución corre en tiempo y memoria $latex O(N^2)$, mucho mejor de lo necesario para obtener todos los puntos. Podemos dividir el problema a la mitad con una observación simple: la torre más alta debe verse desde ambos lados. Además, no dejará que el resto de las torres que ocurren después de ella se vean. Podemos aprovechar este hecho para separar el problema en dos partes: izquierda y derecha. Si $latex f(n,m)$ cuenta de cuántas maneras se pueden poner $latex n$ torres de tal manera de que sólo $latex m$ se pueden ver de un lado, la respuesta que queremos es $latex \sum_{i=0}^{N-1} ({N-1 \choose i} * f(i,F-1) * f(N-i-1,B-1))$.
17 de enero de 2014
Solución a "Panoramas"
Concurso: Preselectivo para la IOI 2014, Etapa 1, Problemset 17 Autor: Miguel Ángel Covarrubias Fuente: Miguel Ángel Covarrubias El problema es un Steiner tree problem (un MST pero donde sólo hay que conectar un subconjunto de nodos) pero con costo por nodo en vez de por arista. El grafo de los panoramas es un árbol más un ciclo. Para un árbol una solución es poner como raíz a $latex s_1$ y para cada $latex s_i$ marcar los nodos en su camino hacia la raíz. Se puede usar DP o recursión para calcular el mínimo numero de vertices que conectan todos los nodos interesantes y pasan por la raíz para cada subárbol.
16 de enero de 2014
Seguridad: IE en Windows XP
Debido a un reciente cambio para mejorar la seguridad de la conexión a omegaUp, hemos decidido dejar de soportar oficialmente IE en Windows XP, a pesar de que sabemos que aún sigue siendo el segundo sistema operativo más común a nivel mundial[1]. Si aún están obligados a usar Windows XP, por favor utilicen algún navegador moderno (Chrome, Firefox u Opera) o alguna versión portátil. Para los interesados, el cambio consistió en hacer un par de optimizaciones para nginx[2], para reducir el tiempo de espera al primer byte, y actualizar la configuración de TLS: se quitaron SSLv2 y SSLv3 (que ya se consideran inseguros), se agregaron TLSv1.1 y TLSv1.2, se eliminó RC4 como algoritmo de cifrado, y ahora se prefiere ECDHE como algoritmo de intercambio de llaves para proveer Perfect Forward Secrecy[3].
5 de enero de 2014
Introducción a omegaUp, parte 0
Hola! Hemos recibido varias preguntas sobre cómo se envían soluciones a omegaUp. Decidí escribir una introducción a omegaUp, antes de empezar a aprender a resolver problemas. En resumen: El objetivo de los concursos es acumular más puntos que todos los demás participantes. En caso de empate, se toma en cuenta la suma de los penalties (dependiendo del concurso puede no haber penalties, ser el tiempo desde que inició el concurso hasta que enviaste la solución o el tiempo desde que abriste el problema por primera vez hasta que lo resolviste). Jamás se te quitarán puntos por intentar resolver un problema: si ya habías enviado una solución con x puntos, únicamente se cambiará tu puntuación y penalty si obtienes más de x puntos. Toda la entrada y salida se hace mediante entrada estándar (“teclado” y “consola”), y no debes imprimir nada que no indique el problema: no debes poner cosas como “Dame un número”. omegaUp te proporcionará la entrada tal y como viene descrita en el problema. Todos los problemas de Java deben tener Main como nombre de clase. Si usas cualquier otro nombre, te regresará un Runtime error. cin (en C++) y Scanner (en Java) son relativamente lentos. En problemas donde haya mucha entrada, se recomienda usar scanf (en C/C++) y BufferedReader (en Java). Toda la entrada y salida está en formato Unix: las líneas terminan con “\n”, no con “\r\n”. Primero veamos cómo luce la arena durante un concurso:
29 de noviembre de 2013
Introducción a omegaUp, parte 1
Estamos iniciando una serie de 10 posts para ayudar a nuestros nuevos usuarios a navegar con facilidad entre la gran cantidad de problemas de omegaUp, en forma de mini-tutoriales con los conceptos básicos, temas y fuentes. Esta colección de tutoriales y ligas te ayudarán a resolver muchos de los problemas de omegaUp y aumentar tu nivel de programación.
9 de octubre de 2013
Introducción a Omegaup, parte 2 - Problemas básicos
Hola de nuevo. Continuando con la serie Introducción a Omegaup, esta vez vamos a hacer referencia a los problemas más sencillos de la plataforma a la fecha. Aquí se encuentra la parte 1 de esta serie. Para estos problemas, no se requiere conocer una técnica o un algoritmo en específico: simplemente requieren implementar (o simular) lo que se describe en el problema o hacer una o dos observaciones relativamente sencillas que permiten simplificar la implementación o acortar el número de operaciones que tu programa tendría que hacer y con ello poder resolver el problema dentro de los límites.
8 de octubre de 2013
Solución a "Mapas de bits"
Concurso: Preselectivo para la IOI 2014, Etapa 1, Problemset 12 Autor: Jorge Alberto González Martínez Fuente: Jorge Alberto González Martínez En el problema se describen dos formas de representar un mapa de bits. La forma bidimensional es simplemente utilizar una matriz para representar los bits. La forma por descomposición consiste en agrupar los bits similares y solo escribir el valor de los bits similares. En caso de que no sean similares todos los bits en un mapa de bits dado, se procede a dividir en cuatro secciones, imprimir la letra D y procesar cada uno de los cuartos de la misma manera, tal como se lee en la descripción del problema.
6 de octubre de 2013
Solución a "Pista"
Concurso: Preselectivo para la IOI 2014, Etapa 1, Problemset 14 Autor: Miguel Covarrubias Fuente: Codeforces Este problema es una ligera modificación del Let’s Play Osu! que apareció en la ronda 146 en Codeforces. La solución explicada la pueden encontrar en el editorial. Para $latex N \le 10$ se pueden checar todas las $latex 2^N$ configuraciones de pistas. Para $latex N \le 1000$ funciona una dinámica $latex O(N^2)$, donde los estados son (posición, altura/profundidad que se lleva hasta el momento).
6 de octubre de 2013
Solución a "Super Nieves Bros"
**Concurso: **Preselectivo para la IOI 2014, Etapa 1, Problemset 6 Fuente: Topcoder Este problema es una adaptación del problema ArcadeManao que apareció en el SRM 576 (Abril 2013) de Topcoder. Los detalles de la solución explicada la pueden en el respectivo Match Summary. La idea general de este problema es muy sencilla: En base a los límites, la primera observación es que el mapa no es muy grande y en el peor caso, la escalera más alta es de tamaño 50. Hay que notar que no nos piden la ruta más corta para capturar la moneda, más bien cuál es el menor tamaño con el que podemos llegar.
30 de septiembre de 2013
Solución de "El Concierto de Dr. Lira"
**Concurso: **Preselectivo para la IOI 2014, Etapa 1, Problemset 13 Fuente: Topcoder El Concierto de Dr. Lira es una adaptación al problema Changing Sounds que apareció en el SRM 366 (2007, ya llovió) en TopCoder. La solución explicada la pueden encontrar en el Match Summary (necesitan registrarse en omegaUp para verlo). Les dejo la implementación de spleensarethebest como un muy bien ejemplo de solución a este problema. Cualquier duda, déjenos un comentario.
30 de septiembre de 2013
Solución a "DP Genérica"
Concurso: Preselectivo para la IOI 2014, Etapa 1, Problemset 13 Autor: Freddy Román Cepeda Fuente: Project Euler Podemos tratar este problema de varias maneras distintas, 3 de las cuales discutiré en esta solución. Análisis 1 Primero, una idea que hubiera obtenido 50 puntos. Podemos observar que el problema es equivalente a encontrar de cuántas maneras se le puede asignar un número $latex n_i$ del conjunto $latex \{0,1,2\}$ a cada potencia de 2 tal que $latex \sum_{i=0}^{\infty} n_i 2^i = x$. Esto también es equivalente a encontrar cuántos números $latex a$ y $latex b$ hay tales que $latex a + b = x$ y no haya ningún bit encendido en $latex b$ que no esté encendido en $latex a$.
25 de septiembre de 2013
Solución a "Comesolo"
Concurso: Preselectivo para la IOI 2014, Etapa 1, Problemset 8 Autor: lhchavez Fuente: Félix Este problema es especial porque es el primero en omegaUp de solo salida! Usualmente lo que debes esperar cuando te enfrentes con uno de esos problemas es que sea un problema NP que no tiene una solución rápida, y usualmente te pedirán que te aproximes lo más posible a la solución óptima. Esto significa que te vas a tener que valer de técnicas ad-hoc y heurísticas para sacar puntos.
14 de septiembre de 2013
Solución a "Colección"
Concurso: Preselectivo para la IOI 2014, Etapa 1, Problemset 5 Autor: Alexis Cervantes / César Cepeda Fuente: Alexis Cervantes / César Cepeda _Estructura de la solución: _¿Qué nos están pidiendo? El problema nos esta pidiendo que encontremos un subconjunto de las tarjetas tal que la suma de todos los puntajes de las tarjetas de ese subconjunto sea la maxima posible, y la suma de sus precios sea menor o igual al dinero con el que cuentas. En otras palabras lo que se esta buscando es que:
14 de septiembre de 2013
Solución a "Ubongo 3D"
Concurso: Preselectivo para la IOI 2014, Etapa 1, Problemset 8 Autor: Miguel Covarrubias Fuente: Miguel Covarrubias La solución pone piezas de manera recursiva mientras quepan en el tablero y no se empalmen. resuelve(pieza) si pieza > P regresa “Si” para cada rotación de la pieza para cada casilla g del tablero para cada cubo c de la pieza si al poner c sobre g, la pieza queda dentro de los primeros 2 niveles del tablero y no se empalma con otra pieza ya puesta entonces marca las posiciones de los cubos de la pieza como ocupados resuelve(pieza + 1) desmarca los cubos de la pieza Para rotar una pieza se puede rotar por $latex 0^o$, $latex 90^o$, $latex 180^o$ o $latex 270^o$ alrededor de cada eje. El número de operaciones es aproximadamente (número de rotaciones * número de casillas del tablero * número de cubos de una pieza)$latex ^3 \le (24 * 7 * 5)^3 < 600,000,000$. En los casos de prueba y en el juego todas las soluciones tocan la base del tablero, si no fuera así, solo hay que duplicar el 7 a 14. Para checar si una pieza se puede poner en cierta posición se pueden usar mascaras de bits para los niveles del tablero y para las posiciones ocupadas. Para poner la última pieza se puede comparar todas las rotaciones de los cubos no ocupados contra la última pieza y la complejidad cubica de la solución se reduce a cuadrática.
14 de septiembre de 2013
Solución a "Bloqueo"
Concurso: Preselectivo para la IOI 2014, Etapa 1, Problemset 8 Autor: Khayyam Fuente: Khayyam La primera observación que hay que hacer es que si todas las carreteras son bidireccionales y entre cada par de ciudades existe exactamente un camino que las conecta (usando una o mas carreteras) entonces la representación gráfica del problema es un árbol: los nodos representan las ciudades y las aristas representan las carreteras. La siguiente figura, muestra el árbol que representa el caso de prueba dado como ejemplo. Los nodos rojos representan las ciudades ocupadas, el esfuerzo necesario para destruir cada carretera se muestra junto a la arista correspondiente. Entonces queremos eliminar un subconjunto de aristas de peso total mínimo de tal forma que los nodos rojos queden separados.
10 de septiembre de 2013
Solución a "La Venganza de Silvio"
Concurso: Preselectivo para la IOI 2014, Etapa 1, Problemset 1 Autor: Freddy Román Cepeda Fuente: Freddy Este problema es bastante sencillo de entender, la dificultad radica en que exponenciar un número de la manera obvia no es lo suficientemente rápido para obtener todos los puntos disponibles. Subtarea 1 Para obtener el primer grupo de puntos, sólo basta calcular $latex N^M$ multiplicando a $latex N$ por sí mismo $latex M$ veces, teniendo cuidado de que no haya overflow.
8 de agosto de 2013
Solución a Las Cartas del Dr. Lira
Concurso: Preselectivo para la IOI 2014, Etapa 1, Problemset 1 Autor: Joemmanuel Ponce Galindo Fuente: Topcoder Básicamente lo que nos pide el problema es encontrar el número de cartas que son distintas entre la configuración que es dada como entrada y una configuración donde las cartas estén alternadas. Cómo se explica en el problema, sólo hay 2 estados posibles en los que una carta puede estar: negro (B) y blanco (W). En otras palabras, la observación clave para resolver el problema es darse cuenta que sólo existen 2 configuraciones que cumplen con las reglas que necesita Dr. Lira: Una configuración donde la primer carta es W, la siguiente B, la siguiente W y así sucesivamente. La otra configuración posible es donde las cartas empiezan con B, forzando la siguiente carta a ser W y esta a su vez forzando la siguiente carta a ser B.
29 de julio de 2013
Solución a "Cueva"
Concurso: Preselectivo para la IOI 2013, Etapa 1, Examen 4 Autor: Ethan Jiménez Vargas Después de comprender el problema podemos deducir dos cosas: Los N puntos de la cueva modelan un árbol, esto debido a la propiedad de que existirán N-1 aristas y siempre hay un camino entre cualquier par de nodos. Podemos traducir la tarea principal del problema a lo siguiente “Para cada una de las Q preguntas, ¿el nodo A es un ancestro del nodo B?”, de modo que necesitamos encontrar una manera óptima de saberlo. Subtarea 1. Para obtener los primeros 25 puntos del problema solo necesitamos implementar el método de fuerza bruta que nos permita conocer si A es ancestro de B, esto puede conseguirse con una búsqueda en profundidad (DFS) que desde el nodo A encuentre la manera de llegar al nodo 1, restringiendo que no sea posible pasar por el nodo B, si existe un camino del nodo A al nodo raíz la respuesta es 1, en caso contrario la respuesta es 0. Hay que cuidar los casos especiales cuando el nodo B es el nodo raíz o cuando el nodo A es el mismo nodo B, en ambos casos la respuesta es 0.
14 de enero de 2013
Solución a "Chilly Rapero"
Concurso: Preselectivo para la IOI 2013, Etapa 1, Examen 12 Autor: Ethan Jiménez Vargas La clave para resolver este problema es interpretar las palabras como nodos y los cambios entre palabras como aristas, de manera que podamos verlo todo como un grafo no dirigido. Asignamos a cada palabra un nodo y creamos las aristas entre nodos verificando alguna de las condiciones que se proponen en el enunciado del problema: si una palabra A es un prefijo o sufijo de la palabra B o la palabra A difiere con la palabra B por un solo caracter, establecemos una arista entre los nodos A y B.
12 de enero de 2013
Solución a "Cambio"
Concurso: Preselectivo para la IOI 2013, Etapa 1, Examen 7 **Autor: **Enrique Lira Vargas Lo importante de este problema es notar como se puede usar un backtracking para contar cosas. En este caso lo que se debía contar era la cantidad de formas de llegar a una cantidad sumando una o más veces una serie de cantidades dadas. Solución de 30, 50 puntos Generar todas las combinaciones que sumen la cantidad C pedida. Para hacer esto se puede hacer con una búsqueda en profundidad de manera ordenada de la misma forma que se calculan permutaciones pero cuidando que la suma no sobrepase el valor C deseado. Esto se puede considerar una búsqueda podada.
8 de enero de 2013
Solución a "Minecraft"
Concurso: Preselectivo para la IOI 2013, Etapa 1, Examen 5 **Autor: **Enrique Lira Vargas Este problema no requiere ninguna observación específica y realmente lo único que hay que hacer es una búsqueda. Para los primeros 50 puntos Este primer sub set de casos se puede resolver implementando una búsqueda en amplitud que nos dé el camino más corto entre dos puntos en un mapa con paredes.
8 de enero de 2013
OmegaUp apoya al 1er Concurso de programación UVM
El pasado 29 de noviembre se llevó a cabo, en las instalaciones de UVM Campus Sur Guadalajara, el Primer Concurso de Programación UVM, bajo el marco del “Innovation and Technology Fest”.
7 de enero de 2013
Solución a "K-Arbol"
Concurso: Preselectivo para la IOI 2013, Etapa 1, Examen 5 **Autor: **Saul de Nova Caballero En pocas palabras el problema es, dado un árbol que se puede colorear, encuentra la menor solución satisfaciendo las restricciones dadas sobre los colores. Este problema es un caso particular de Graph Coloring(en español coloración de grafos), en donde el grafo es un árbol. Subcaso 1(10 puntos)Para el primer subcaso era posible hacer una búsqueda en profunidad sobre todos los nodos, encontrando la menor solución. Para guardar el árbol, era posible utilizar una matriz que guardara todos los colores posibles y entonces ver si era posible una solución con el menor color posible. La solución de este caso era trivial si se usaba una búsqueda exhaustiva.
7 de enero de 2013
Solución a "Metro"
Concurso: Preselectivo para la IOI 2013, Etapa 1, Examen 12 **Autor: **Alain Acevedo Mejía El problema en cuestión se reduce a encontrar un árbol de expansión mínima. La solución es una aplicación directa de alguno de los algoritmos existentes para ello (bien implementada), por lo que hablaré brevemente sobre una de las posibilidades y daré referencias donde puedan encontrar información más detallada. Para encontrar el costo mínimo de unir todas las estaciones debemos encontrar el árbol de expansión mínima de la gráfica en cuestión (es decir, una subgráfica conexa que una todos los vértices de la gráfica original y cuyo peso (la suma de los costos de todas sus aristas) sea el mínimo posible (siempre es un árbol)). Para ello una opción es usar el algoritmo de Kruskal: Ordenamos las aristas por su peso y vamos agregando cada arista de peso mínimo que no cree un ciclo en la gráfica. Hacemos esto hasta haber conectado todos los vértices de nuestra gráfica. Por la cantidad de aristas que tenemos requerimos ordenar eficientemente y verificar si las aristas forman un ciclo o no eficientemente en cada paso, de lo contrario el programa no correrá en tiempo.
7 de enero de 2013
Solución a "Pulseras"
Concurso: Preselectivo para la IOI 2013, Etapa 1, Examen 10 **Autor: **Alain Acevedo Mejía Considero este problema como un buen ejemplo para quienes desean comenzar a trabajar con problemas de programación dinámica. Se nos pide calcular la cantidad de pulseras diferentes que se pueden construir bajo ciertas condiciones. Podemos comenzar preguntándonos, ¿qué sucede si la primera cuenta es negra? La siguiente podrá ser sólo blanca. Y si comenzamos con una blanca, la siguiente puede ser negra o blanca. Podemos entonces en una matriz de 2xn colocar en cada columna cuántas secuencias distintas hay que en la posición i-ésima terminen en negro y cuántas en blanco de tal modo que no haya dos cuentas negras consecutivas. Simplemente, para obtener los números de la siguiente posición, observamos que el número de las que terminan en blanco es la suma de ambos números de la posición anterior y de las que terminan en negro es el número de secuencias que terminan en blanco de la posición anterior.
7 de enero de 2013
Solución a "Los Bloques de Link"
Concurso: Preselectivo para la IOI 2013, Etapa 1, Examen 8 **Autor: **Alain Acevedo Mejía Es claro que no es posible probar todas las sucesiones posibles de movimientos de los bloques para encontrar la solución (a excepción de casos muy simples). El número de tales sucesiones puede ser infinito en caso de que se puedan formar ciclos de movimientos (lo cual sucede en muchos de lo casos de prueba), y aún en casos donde el número sea finito puede suceder que no se tenga tiempo para probarlos todos.
7 de enero de 2013
Solución a "Problema"
Concurso: Preselectivo para la IOI 2013, Etapa 1, Examen 10 **Autor: **Hugo Dueñas Primero, dado una secuencia $latex A$ denotaremos por $latex s(A)$ a la suma de los elementos de A. Entonces podemos replantear el problema como: Dada una secuencia $latex S$ debemos de econtrar una subsecuencia $latex A$ de $latex S$ tal que $latex s(A) - (s(S) - s(A))$ sea la minima posible. Ahora, como $latex s(A) - (s(S) - s(A)) = 2 \times s(A) - s(S)$, entonces tenemos que minimizar $latex 2 \times s(A) - s(S)$ que es lo mismo que minimizar $latex s(A) - s(S)/2$. O sea, debemos de encontrar una subsecuencia $latex A$ cuya suma esté lo más cercana a la mitad de la suma de $latex S$, en particular podemos restringir nuestra búsqueda a las subsecuencias cuya suma sea menor o igual a $latex s(S)/2$.
7 de enero de 2013
Solución a "Alfiles"
Concurso: Preselectivo para la IOI 2013, Etapa 1, Examen 7 **Autor: **Hugo Dueñas Lo primero que se debe de notar es que en cada una de las $latex 2n-1$ diagonales principales, las cuales mostradas en la imagen de abajo, habrá máximo 1 alfil. Lo mismo se cumple para las diagonales invertidas, mostradas también en una imagen abajo. Ahora, cada diagonal principal se cruza con ciertas diagonales invertidas. Entonces se plantea una solución de tipo Backtracking que corre sobre las diagonales principales marcando diagonales invertidas a cada paso (representando que se ha colocado un alfil en el cruce de esas dos diagonales).
7 de enero de 2013
Solución a "Mario Reloaded"
Concurso: Preselectivo para la IOI 2013, Etapa 1, Examen 8 **Autor: **Pavel Herrera Dominguez) Observaciones Lo primero es ver como se modelan los estados del problema sin pensar en que Mario puede tomar los atajos, únicamente pensar en las llaves, claramente existen $latex n\times2^m$ estados, pues no importa el orden en que se toman las llaves solo las llaves que se tienen al llegar a cada puerta. A partir de aquí nos referiremos como estado a la puerta y las llaves que trae Mario.
7 de enero de 2013
Solución a "El collar de perlas"
Concurso: Preselectivo para la IOI 2013, Etapa 1, Examen 10** Autor: **Félix Rafael Horta Cuadrilla En una bosque habitan dos clanes de enanos: los enanos rojos y los enanos verdes. Durante sus expediciones en las cuevas cercanas, un grupo de enanos rojos y verdes encontraron un collar formado por perlas blancas y negras que no tienen ningun valor, pero al final del collar hay un valioso diamante. Los dos clanes de enanos quieren apoderarse del diamante. Para resolver el problema de manera pacifica deciden jugar el siguiente juego: a cada uno de los N enanos se le asigna un numero del 1 al N (un numero diferente para cada enano) y dos listas de numeros, una negra y una blanca (las listas pueden ser diferentes entre si). Cada lista contiene una cantidad diferente de numeros, cada numero i en cualquier lista representa al enano i. Durante el juego, el collar se pasa de un enano a otro de acuerdo con las siguientes reglas: cuando un enano recibe el collar, el quita la primer perla en el collar y si la perla es blanca, entonces pasa lo que quedo del collar a cualquier enano que este en su lista blanca (al que el quiera), pero si la piedra es negra, entonces pasa lo que quedo del collar a algun enano de su lista negra. Para empezar el juego, el collar se le da a un enano aleatoriamente. En algun momento el collar solamente va a tener el diamante, el enano que recibe el collar en este estado gana el diamante para su clan y el juego termina.
3 de enero de 2013
Iniciando milestone en OmegaUp: Karate Kid
Después de año y medio de desarrollo (en nuestros tiempos libres) y de finalmente ser la plataforma de concurso en 3 de los eventos de programación más importantes de México ( Olimpiada Mexicana de Informática OMI, Concurso Nacional de Programación CONACUP y el Concurso Universitario de Programación de Aguascalientes CUPA) hemos decidido graduar nuestro motor de evaluación y concursos para invertir más tiempo en la usabilidad del sitio como plataforma de aprendizaje en un nuevo milestone: Karate Kid.
14 de noviembre de 2012
CONACUP 2012 - Todo un éxito
Los días 3 y 4 de Noviembre del 2012, 80 de los mejores programadores de México se dieron cita en el ITESO de Guadalajara, Jalisco para participar en el 2do Concurso Nacional Abierto de Programación CONACUP, organizado por la Sociedad Latinoamericana de Ciencia y Tecnología SOLACyT. El equipo organizador del CONACUP 2012El equipo organizador del CONACUP 2012 Nos da mucho gusto que Omegaup fue la plataforma oficial para la evaluación de los problemas y estamos completamente comprometidos con el proyecto para los años venideros.
9 de noviembre de 2012
CUPA 2012 - Resultados
El pasado 20 de Octubre se llevó a cabo el Concurso Universitario de Programación de Aguascalientes CUPA. Participaron 26 equipos de 3 personas en un examen de 9 problemas. Los problemsetters oficiales fueron la Dra. Aurora Torres (Plano Estropeado), David Esparza Alba (Traductor, Display Descompuesto, Puntos imantados, Primos juntos siempre y Santas bombillas ) y Óscar Dávalos (Cadenas de Potencias de 2, Múltiplos y Cubos.). Omegaup fue la plataforma de evaluación del CUPA.
7 de noviembre de 2012
Solución a "Teclado Roto"
Concurso: Preselectivo para la IOI 2013, Etapa 1, Examen 2** Autor: **Jorge Alberto González Martínez Los temas para el examen donde apareció este problema eran pilas, colas y búsqueda binaria. Después de haber estudiado los temas, es buena idea combinar la teoría aprendida. El problema del teclado roto describe una serie de operaciones en las que es necesaria una estructura en la que sea posible agregar elementos por ambos lados (izquierda y derecha). La descripción del problema muestra las restricciones, que no superan los 100, 000 elementos, por lo que es posible hacer un arreglo estático de caracteres de ese tamaño.
28 de octubre de 2012
Solución a "El Artista Lento"
Concurso: Preselectivo para la IOI 2013, Etapa 1, Examen 2** Autor: **Christian Hernández Lo primero de lo que debemos darnos cuenta es de que como los pedazos son de dimensiones enteras y se colocan en dimensiones enteras, podemos “pensar” el problema de manera que en lugar de pegar rectángulos de Mi x Ni, estamos pegando Mi x Ni de 1 x 1 (Ejemplo: Si tuvieramos que pegar un rectángulo de 4 x 3, podemos pensarlo como pegar 12 rectangulos de 1 x 1). Podemos pensar lo mismo de los rectángulos adhesivos.
19 de octubre de 2012
Solución a "Engranes"
Concurso: Preselectivo para la IOI 2013, Etapa 1, Examen 1** Autor: **Omar Ocegueda (Khayyam) **Solución por: **Enrique Lira Para poder resolver este problema hay que ver ciertas propiedades a las cuales podemos llegar fácilmente a partir de ejemplos. Una primera duda que nos surge es: ¿Vuelve al estado inicial?, si hacemos un par de ejemplos podemos ver que si, otra duda que nos surge es: ¿Cuándo vuelve al estado inicial?, y aquí comienza lo complicado. Para saber cuando vuelve a su estado inicial hay que notar ciertas cosas, una de ellas es que en cuanto el diente 1 vuelve a tocar al valle 1 hemos vuelto al estado inicial, no hay forma de que el diente 0 toque al valle 0 sin haber vuelto al estado inicial, entonces hay que buscar ese instante.
13 de octubre de 2012
Solución a "Juego Lento"
Concurso: Preselectivo para la IOI 2013, Etapa 1, Examen 1 Autor: Ethan Jimenez Empecemos analizando el caso en que solo jugamos con un montón de fichas, dada la restricción de tomar únicamente una sola ficha el juego se vuelve predecible ya que no hay más opción que tomar una ficha de ese montón. Si el montón tiene una sola ficha el jugador con el primer turno pierde, si hay dos fichas el jugador con el primer turno gana, si hay tres fichas el jugador con el primer turno pierde, y así alternadamente, podemos entonces deducir que si hay un número impar de fichas en el montón, el jugador con el primer turno perderá, por el otro lado, si el montón tiene un número par de fichas ganará la partida.
12 de octubre de 2012