Olimpiada Internacional de Informática 2011 22 29 Julio de 2011, Ciudad de Pattaya, Tailandia Tareas de la Competencia Día 2 [COL] Español 1.0.

Documentos relacionados
International Olympiad in Informatics July 2011, Pattaya City, Thailand Competition Tasks Day 2 VEN 1.3. Parrots

International Olympiad in Informatics July 2011, Pattaya City, Thailand. Loros (Parrots)

Problema B Olonso y los laberintos

Dirección Alumnos. Av. Benjamín Aráoz C.P Tucumán - Argentina Tels.: 0054 (0381) Fax: Internet:

MATERIAL 2 EXCEL 2007

XVI Olimpiada Colombiana de Computación Nivel Superior Prueba Final Dia 2

UNIDAD 1. LOS NÚMEROS ENTEROS.

4º ESO 1. ECUAC. 2º GRADO Y UNA INCÓGNITA

PROCEDIMIENTO DE ENLACE NOMIPAQ

Novedades en Gestión de Expedientes (9 junio 2015)

Alexa. Sistema de Reservas de Aulas y VideoBeam. Docentes y Jefe de Audiovisuales. Manual de Usuario:

La explicación la haré con un ejemplo de cobro por $ más el I.V.A. $16.00

Matrices equivalentes. El método de Gauss

Modulo 1 El lenguaje Java

SiteAudit Knowledge Base Programación de Reportes en SiteAudit

ALGUNAS AYUDAS PARA EL ACCESO AL AULA DIGITAL Contenido

MGX CANAL DE SOPORTE Y ASISTENCIA

Capítulo 3 Diseño del Sistema de Administración de Información de Bajo Costo para un Negocio Franquiciable

!!!!!!!! !!!!! Práctica!4.! Programación!básica!en!C.! ! Grado!en!Ingeniería!!en!Electrónica!y!Automática!Industrial! ! Curso!2015H2016!

Cómo ingresar a la Sucursal Electrónica?

Acronis License Server. Guía del usuario

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

342 SOBRE FORMAS TERNARIAS DE SEGUNDO GRADO.

4.2- Instalación y Configuración de un Servidor DNS Dnsmasq en Ubuntu sin DHCP

CAPÍTULO VI PREPARACIÓN DEL MODELO EN ALGOR. En este capítulo, se hablará acerca de los pasos a seguir para poder realizar el análisis de

TP 0 - Implementación de codificador y estructura básica. BitsTranslation. 1.0

MANUAL ECOMMERCE 2.0

LABORATORIO Nº 3 PRÁCTICA DE FUNCIONES EN MICROSOFT EXCEL

Curso PHP Módulo 1 R-Luis

LiLa Portal Guía para profesores

GUÍA RÁPIDA DE TRABAJOS CON ARCHIVOS.

Al adquirir Gear Online se hará entrega del modulo de parámetros en cual podemos parametrizar todas las características de todas las áreas que

LICENCIATURA EN EDUCACION FISICA RECREACION Y DEPORTES

GUIA PARA GENERAR PROSPECTOS Y VENTAS EN WEB

SIIGO PYME PLUS. Proceso de Recuperación. Cartilla I

Divisibilidad y números primos

Actualización de versión a Bizagi 10.x

Capitulo V Administración de memoria

Ecuaciones de primer grado con dos incógnitas

PROCEDIMIENTO DE ACTUALIZACIÓN DEL MÓDEM-ROUTER EFFICIENT Speed Stream 5660

MICQ. Trabajo Práctico Final Seminario de Ingeniería en Informática I Facultad de Ingeniería, UBA. Junio Cátedra: Pablo Cosso

Centro de Capacitación en Informática

El palacio de la Alhambra: La primera expansión. El favor de los visires

Autor: Microsoft Licencia: Cita Fuente: Ayuda de Windows

Ejemplos de conversión de reales a enteros

5.4. Manual de usuario

Capítulo 9. Archivos de sintaxis

ZCARTAS: Iniciación a la suma y resta de números enteros Introducción Actividad 1: Escenario con cartas numeradas desde -2 hasta 2...

PREGUNTAS FRECUENTES SOBRE LA COM A 3602

UTILIZACIÓN DE UNA CUENTA DE CORREO ELECTRÓNICO (NUEVO) Acceso al correo electrónico

Los números racionales

COPIAS DE SEGURIDAD AUTOMÁTICAS DE DIRECCIONES CALLEÇPAÑA

MEDIDAS DE TENDENCIA CENTRAL

Universidad Católica del Táchira Vicerrectorado Académico Coordinación de Educación Virtual. Guia Rapida para Estudiantes

Tenemos 3 formas de juego, la bolsa de acciones, la polla y la polla extraordinaria.

IV. CARGUE DE SOPORTES

UNIDAD 6. POLINOMIOS CON COEFICIENTES ENTEROS

Modificación y parametrización del modulo de Solicitudes (Request) en el ERP/CRM Compiere.

34.- Cómo Hacer Evaluación del Desempeño

Guías _SGO. Gestione administradores, usuarios y grupos de su empresa. Sistema de Gestión Online

PROYECTOS, FORMULACIÓN Y CRITERIOS DE EVALUACIÓN

SUPERINTENDENCIA DE INDUSTRIA Y COMERCIO DELEGATURA DE PROPIEDAD INDUSTRIAL DIVISIÓN DE SIGNOS DISTINTIVOS

La ventana de Microsoft Excel

Primeros pasos con MEDIAplus elearning Cloud

3. Número inicial y número final de mensajes mostrados en la página actual.

Resumen ÁREA DE FACTURACIÓN::INFORMES::Pedidos Detalle Resumen ÁREA DE

INTERNET I LECCIÓN N 3 Cambio de la página principal

Gestión de Oportunidades

Guía para el Portal de Profesores del Sistema de Información CLASS Académico

INFORMÁTICA. Práctica 5. Programación en C. Grado en Ingeniería en Electrónica y Automática Industrial. Curso v1.0 (05.03.

Guías. _Mi Entel. SMS Empresas

Servicio de Marketing

Entorno de Ejecución del Procesador Intel Pentium

FORMACIÓN OBLIGATORIA DE EMPLEADOS Y AUXILIARES EXTERNOS DE LA MEDIACIÓN SITIO WEB DE AUTOESTUDIO CREADO PARA EL CUMPLIMIENTO DE ESTA NORMA

5.2.- Configuración de un Servidor DHCP en Windows 2003 Server

SISTEMA InfoSGA Manual de Actualización Mensajeros Radio Worldwide C.A Código Postal 1060

Hacer clic sobre la figura, para extraer todos los registros o presionar la tecla F2.

UNIDAD DIDÁCTICA Nº 7 USO DE LOS RECURSOS EN MOODLE

Introducción a la Firma Electrónica en MIDAS

Disposición complementaria modificada en Sesión de Directorio N del 15 de diciembre de 2014.

Sistema para el control y tramitación de documentos SITA MSc. María de la Caridad Robledo Gómez y Ernesto García Fernández.

BASES Y DIMENSIÓN. Propiedades de las bases. Ejemplos de bases.

Introducción. Contabilidad y Estados Financieros

MANUAL CENTRO DE SOPORTE PARA USUARIOS

Funciones, x, y, gráficos

Capitulo 3. Desarrollo del Software

MANUAL DE ADMINISTRADOR DEL SITIO WEB DEL ISTU

Quadice REGLAS DEL JUEGO

Profr. Efraín Soto Apolinar. La función lineal. y = a 0 + a 1 x. y = m x + b

pgp4usb cifrar tus texto en mensajes de correo electrónico y cifra tus archivos

MANUAL DE USUARIO DEL MÓDULO TPV

Bases de datos en Excel

E 1 E 2 E 2 E 3 E 4 E 5 2E 4

Internet como herramientas de comunicación: El correo electrónico

Banco de la República Bogotá D. C., Colombia

DCISERVICIOS, SA DE CV

NÚMEROS NATURALES Y NÚMEROS ENTEROS

Pasar del correo en IMAP o Webmail con el servicio de correo de Generanet S.L. al servicio de correo de propio con soporte técnico con ValdeSoftware

MANUAL DE INICIACIÓN A JOVELLANOS VIRTUAL J. A. Espejo coordinador.tic@iesjovellanos.org 1

Transcripción:

Loros Yanee es una admiradora de aves. Desde que leyó sobre IP over Avian Carriers (IPoAC), ella ha pasado mucho tiempo entrenando una bandada de loros inteligentes para enviar mensajes a largas distancias. El sueño de Yanee es usar sus aves para enviar un mensaje M a un lugar muy muy lejano. Su mensaje M es una secuencia de N enteros (no necesariamente distintos), cada uno entre 0 y 255, inclusive. Yanee mantiene K loros especialmente entrenados. Todos los loros se ven igual; Yanee no puede diferenciarlos. Cada loro puede recordar un solo entero entre 0 y R, inclusive. Anteriormente, ella probó un sistema sencillo: para enviar un mensaje, Yanee soltaba cuidadosamente a las aves de la jaula uno por uno. Antes de que cada ave volara en el aire, ella le enseñaba un número de la secuencia en orden. Desafortunadamente, este sistema no funcionó. Eventualmente, todas las aves llegaron al destino, pero no llegaron necesariamente en el orden en que habían partido. Con este sistema, Yanee podía recuperar todos los números que ella envió, pero no era capaz de ponerlos en el orden correcto. Para cumplir su sueño, Yanee necesitará un sistema mejor, y para eso necesita de su ayuda. Dado un mensaje M, ella planea soltar a las aves una por una como antes. Ella necesita que usted escriba un programa que ejecute dos operaciones separadas: Primero, su programa debe leer un mensaje M y transformarlo en una secuencia de a lo más K enteros entre 0 y R que ella enseñará a las aves. Segundo, su programa debe ser capaz de leer la lista entre 0 y R recibida cuando las aves llegan a su destino, y luego transformarla de vuelta al mensaje original M. Usted puede suponer que todos los loros siempre llegan al destino, y que cada uno de ellos recuerda el número que le fue asignado. Yanee le recuerda una vez más que los loros pueden llegar en cualquier orden. Observe que Yanee tiene únicamente K loros, por lo tanto la secuencia de enteros entre 0 y R que usted produce deberá contener a lo sumo K enteros. Su tarea Escriba dos procedimientos separados. Uno de ellos debe ser usado por el remitente (codificador) y el otro por el destinatario (decodificador). Página 1 de 6

El proceso en general es mostrado en la siguiente figura: Original Codificado Mezclado de Salida Codificador Mezclador Decodificador (Debe ser igual a M) Los dos procedimientos que usted debe escribir son: Procedimiento encode(n,m) que recibe los siguientes parámetros: N la longitud del mensaje. M un arreglo unidimensional de N enteros representando el mensaje. Usted puede asumir que 0 M[i] 255, para 0 i < N. Este procedimiento debe codificar el mensaje M en una secuencia de enteros entre 0 y R, inclusive, que debe ser enviado usando los loros. Para reportar esta secuencia, su procedimiento encode debe llamar el procedimiento send(a) para cada entero a que usted quiere enseñar a una de las aves. Procedimiento decode(n,l,x) que toma los siguientes parámetros: N la longitud del mensaje original. L la longitud del mensaje recibido (el numero de aves enviadas). X un arreglo unidimensional de L enteros representado los números recibidos. Los números X[i] para 0 <= i < L son precisamente los números que su procedimiento encode produjo, pero posiblemente reorganizados en un orden diferente. Este procedimiento debe recuperar el mensaje original. Para reportarlo, su procedimiento decode debe llamar el procedimiento output(b) para cada entero b en el mensaje decodificado, en el orden correcto. Note que R y K no se reciben como parámetros de entrada por favor mirar la descripción de las subtareas posteriormente. Para resolver correctamente una subtarea dada, sus procedimientos deben satisfacer las siguientes condiciones: Todos los enteros enviados por su procedimiento encode deben estar en el rango especificado en la subtarea. El número de veces que su procedimiento encode llama al procedimiento send no debe exceder el límite K especificado en la subtarea. Por favor, note que K depende en la longitud del mensaje. Página 2 de 6

El procedimiento decode debe recuperar correctamente el mensaje original M y llamar al procedimiento output(b) exactamente N veces, con b igual a M[0], M[1],, M[N-1], respectivamente. En la última subtarea, su puntaje varía de acuerdo a la proporción entre las longitudes del mensaje codificado y el mensaje original. Ejemplo Considere el caso donde N = 3, y M= 10 30 20 El procedimiento encode(n,m), usando algún método extraño, puede codificar el mensaje en la secuencia de números (7, 3, 2, 70, 15, 20, 3). Para enviar esta secuencia, debería llamar al procedimiento send como sigue: send(7) send(3) send(2) send(70) send(15) send(20) send(3) Una vez que todos los loros han llegado a su destino, asuma que obtenemos la siguiente lista de números recibidos: (3, 20, 70, 15, 2, 3, 7). El procedimiento decode será llamado entonces con N=3, L=7, y X= 3 20 70 15 2 3 7 El procedimiento decode debe producir el mensaje original (10, 20, 30). Reporta el resultado llamando al procedimiento output como sigue. Página 3 de 6

output(10) output(30) output(20) Subtareas Subtarea 1 (17 puntos) N = 8, y cada entero en el arreglo M es 0 ó 1. Cada entero codificado debe estar en el rango de 0 a R=65535, inclusive. El número de veces que usted puede llamar al procedimiento send es a lo más K=10 N. Subtarea 2 (17 puntos) 1 N 16. Cada entero codificado debe estar en el rango de 0 a R=65535, inclusive. El número de veces que usted puede llamar al procedimiento send es a lo más K=10 N. Subtarea 3 (18 puntos) 1 N 16. Cada entero codificado debe estar en el rango de 0 a R=255, inclusive. El número de veces que usted llama al procedimiento send es a lo más K=10 N. Subtarea 4 (29 puntos) 1 N 32. Cada entero codificado debe estar en el rango de 0 a R=255, inclusive. El número de veces que usted puede llamar al procedimiento send es a lo más K=10 N. Página 4 de 6

Subtarea 5 (hasta 19 puntos) 16 N 64. Cada entero codificado debe estar en el rango de 0 a R=255, inclusive. El número de veces que usted puede llamar al procedimiento send a lo más K=15 N. Importante: el puntaje para esta tarea depende de la proporción entre la longitud del mensaje codificado y la del mensaje original. Para un caso de prueba dado t en esta subtarea, sea Pt=Lt/Nt la proporción entre la longitud Lt del mensaje codificado y Nt la del mensaje original. Sea P el máximo Pt. Su puntaje para esta subtarea será determinado usando las siguientes reglas: Si P 5, usted obtiene todos los 19 puntos. Si 5 < P 6, usted obtiene 18 puntos. Si 6 < P 7, usted obtiene 17 puntos. Si 7 < P 15, su puntaje es 1 + 2 (15 - P), redondeado al entero más cercano. Si P > 15 o cualquiera de sus salidas es incorrecta, su puntaje es 0. Importante: Cualquier solución válida de las subtareas de 2 a 4 también resolverá todas las subtareas que le preceden. Sin embargo, debido al límite grande de K, una solución válida de la subtarea 5 podría no ser capaz de resolver las subtareas de la 1 a la 4. Es possible resolver todas las subtareas usando la misma solución. Detalles de implementación Límites Ambiente de Calificación: En el ambiente real de calificación, sus envíos serán compilados en dos programas e y d a ser ejecutados separadamente. Sus dos módulos encoder y decoder serán vinculados a cada ejecutable, pero únicamente e llama a encode y únicamente d llama a decode. Límite de tiempo: El programa e hará 50 llamadas al procedimiento encode y deberá correr en 2 segundos. El programa d hará 50 llamadas al procedimiento decode y debe correr en 2 segundos. Límite de memoria: 256 MB Nota: No hay un límite explicito del límite de memoria de pila (stack). La memoria de pila cuenta como parte del uso total de memoria.. Página 5 de 6

Interfaz (API) Carpeta de implementación: parrots/ A ser implementado por el participante: encoder.c decoder.c Interfaz del participante: encoder.h decoder.h Interfaz del grader: encoder.h decoder.h Grader para experimentación: grader.c o grader.cpp El grader para experimentación ejecuta dos rondas separadas. En cada ronda, primero llama a encode con los datos dados y luego llama a decode con la salida que produjo su procedimiento encode. En la primera ronda el calificador no cambia el orden de los enteros en el mensaje codificado. En la segunda ronda el grader para experimentación intercambia los enteros en posiciones impares y pares. El grader real aplicará varios tipos de permutaciones a los mensajes codificados. Usted puede cambiar como el grader para experimentación mezcla los datos modificados su procedimiento shuffle (en C/C++). El grader para experimentación también verifica para ambos el rango y la longitud de los datos codificados. Por defecto, verifica que los datos codificados estén en el rango entre 0 y 65535, inclusive, y que la longitud sea a lo más 10xN. Usted puede cambiar esto ajustando las constantes channel_range (de 65535 a a255, por ejemplo) y max_expansion (de 10 a 15, o 7, por ejemplo). Entrada del grader de ejemplo: grader.in.1, grader.in.2,... Nota: El grader de ejemplo lee la entrada con el siguiente formato: Línea 1: N Línea 2: una lista de N números M[0], M[1],, M[N-1] Salida esperada para el grader de experimentación: grader.expect.1, grader.expect.2, Cada uno de estos archivos debe contener precisamente el texto Correct.. Página 6 de 6