Concurso Programacion

Poisonous

Yo lo que no termino de pillar es como probar los programas, si no abres un fichero ni nada, como hago que la entrada de un fichero sea la entrada estandar?

estoy haciendolo asi : cat prueba | ./program

pero no se, me parece 1 poco chapucero, si eso me hare el script y todo xd

gF

En linux: ./prueba < entrada.txt
En windows: prueba < entrada.txt

Se le redirige la entrada al fichero y así no lee de la entrada estándar sino de entrada.txt

Poisonous

A mi tb me dice :

Dear PoI:

Your C program has solved Ok the problem 10055 (Hashmat the Brave Warrior)
in 0.998 seconds using as much as 392 kbytes of virtual memory.
Congratulations!

Warning: Your program would get a Presentation Error in a true contest.
The 24-hours judge interpretes it as an "Accepted" problem.

--

Yo no usé un float (use doubles), y dejo la linea en blanco del final de rigor, vamos tal cual deberia ser la salida :/

gF

#33 eso pasa por lo que dijo #30, al usar float o double, los nº muy grandes como por ej 232 se representan de manera exponencial con lo cual se pierde precisión, por ponerte un ejemplo, si tienes 4 * 1030 y le sumas 1, el cambio es tan insignificante que la representación va a seguir siendo 4 * 1030.

Para comprobarlo basta con que añadas el siguiente caso de prueba:

4294967296 1
(232 = 4294967296) ya veras como tu programa imprime 4294967296 en lugar de 4294967295.
Es por eso que te dice que te lo dan por bueno, pero que en una competición real no lo sería.

Parece ser que por ahora nadie ha optado por la solución que se me ocurrió a mí y que no da ese problema. Una pista: ¿pq no consideráis la entrada como una cadena de caracteres en lugar de un nº? En una cadena de caracteres si se puede almacenar la cadena "4294967296" ¿no?

Repito que en el post #2 puse otro problema. Este nuevo problema, al contrario que el primero es MUCHO más fácil de lo que parece y es para que veáis como algo que parece sencillo no lo es tanto y viceversa.

LOc0

#34

A ver, #30 lleva razón con lo de la coma flotante, con matices aunque tp me quiero ahora enrollar (una cosa es precisión y otra rango). Lo que sí sé es que con double funcionaba perfectamente el caso de 4294967296 4294967295 devolvía 1.

En cuanto al primer problema, me piqué bastante ayer con los tiempos de ejecución y en la última solución conseguí bajar hasta 0.234s (21/8962) leyendo como cadena de caracteres y haciendo otras perrerías (me divierte lo de optimizar y arañar milésimas xD).

Si tengo tiempo esta tarde le echaré un ojo al del pantano.

Por cierto, ¿quién eres en la web gF?

Salu2 ;)

gF

Ya me puesto el tag. Por cierto lo del caso de prueba que dices es normal, pero prueba:

4294967296 1 a ver si te da 4294967295

LOc0

#36

Ese caso tb funciona perfectamente con double, así que no entiendo lo del error de presentación, pero bueno, da igual...

Salu2 ;)

AlKhwarizmi

#35: Ah, perdona, que no había visto donde decía que el error que te daba era "Presentation Error". Si es "Presentation Error" no es que el resultado sea incorrecto... son cosas de espaciados, \n's, EOF's y cosas así.

Igual es que no escribes un \n al final de la última línea, o que por el contrario escribes dos, o algo así.

Efernand

Primer problema resuelto ^^ Se me resisitio un poco por culpa de la E/S.

Y el segundo... diría que el WA que me ha dado se debe también a E/S, aunque seguiré trasteándolo un poco mas a ver.... :P

Por cierto.... muy buena la intención de este thread, se agradecen propuestas como esta :P

javithelong

La verdad es que tiene buena pinta, si dentro de un mes seguis (que es cuando acabo los exámenes) me apuntaré a daros caña :P

PD: De todas formas, me parecen problemas muy sencillos si no tienes limitación de tiempo para resolverlos (en plan, 2 horas para hacerlo funcionar)

gF

En el concurso real son 5 horas para resolver 8 o 9 problemas que son mas complicados que estos 2.

javithelong

Claro, que es la gran dificultad que tienen estos campeonatillos.

Aqui tenemos CUPCAM y cosas así, que te ponen unos cuantos problemas en 3 horas (me parece que eran 3) y gana el que más resuelva.

gF

En mi universidad, los que ganan la fase local, forman un equipo para la fase del sureste de europa donde se compite contra francia, italia, portugal... que este año se celebra en portugal. Luego el campeón de esa fase se va a la fase final mundial.

Supongo que si vas a una universidad de madrid tb podrás de alguna manera clasificarte para la fase europea... por lo menos el año pasao, la UAM, la UCM y la UPM tenían equipos en la fase europea...

Efernand

Solveltado el 2ndo problema también :P Asco de E/S :P xDDD!

No estoy acostumbrado a trabajar con C, he usado mucho mas Java, pero al recomendarnos usar C para la resolución de estos... por compatibilidad con los jueces online estos...

xcierto.... el [MVida] Enrique Fern ese soy yo, ;)

LOc0

El de Nessy aceptado a la primera, pero no sé qué coño habré hecho que me lo ha puesto el último en el ranking de tiempos xDD...

Salu2 ;)

Edito: Ahora ya estoy en un puesto decentillo (justo detrás de gF por cierto xD).

BRaDoLH

No entiendo, el fichero con la entrada estandar te lo dan ellos, lo creas tú o como?

gF

Es fácil o no? son 5 o 6 líneas de código :p

#46 ellos te dan un ejemplo de entrada que tu puedes copiar en un fichero para probarlo, pero los casos que ponen son muy limitados y que el programa te funcione para esos casos no implica que funcione para todos. Tu puedes crearte tus propios casos de prueba siempre que sepas la salida que se espera que dé.

gF

3er problema en el post #2

LOc0

3º resuelto y me retiro hasta pasados exámenes. ¡Qué no se pierda este thread!

Salu2 ;)

Efernand

Supongo que seré yo que he entendido mal enunciado, pero algo no me cuadra en la salida que dan como ejemplo.

m -> tiempo que tarda en comer una hamburguesa de un tipo
n -> tiempo que tarda en comer una hamburguesa de un tipo2
t -> tiempo que le damos a homer para comer hamburguesas

para la entrada "3 5 54" esta claro que la salida es "18", pero... para la entrada "3 5 55" la salida no deberia ser "18 1" ¿?

donde 18 es el nº máximo de hamburguesas que debora nuestro amigo, y 1 el tiempo dedicado a beber cerveza.

Quizás entendí mal el enunciado.... leeré y releeré :P

gF

#50 no, hay que evitar siempre que sea posible que beba cerveza, para el 2º caso sería 15 de 3 y 2 de 5, lo que en total hace 17 que es la salida que da.

Si fuera como tu dices seria muy fácil pq solo habría que hacer (tiempo total / menor tiempo) para saber el máximo de hamburguesas y (tiempo total % menor tiempo) para saber las cervezas.

Efernand

por eso me estrañaba... xD, ahora le pegaré otro ojo :P