1212 - Jingle Composing

Discussion around the problems of the COJ.
Forum rules
Remember that posting AC code is not allowed here. If you are going to ask a question or to post a solution, describe your algorithm instead. Posting AC code will be penalized.
User avatar
dovier
Posts: 1053
Joined: Fri Nov 11, 2011 9:32 am
Location: Havana, Cuba
Gender: Male

1212 - Jingle Composing

Postby dovier » Mon Feb 06, 2012 3:47 pm




dpaladin
Posts: 4
Joined: Fri Oct 21, 2016 5:38 am
Gender: None specified

Re: 1212 - Jingle Composing

Postby dpaladin » Fri Oct 21, 2016 5:45 am

TLE on C#, C++ & C++11. Even tried a code i found on internet, marked as a solution for C++

User avatar
isaac
Posts: 83
Joined: Mon Oct 26, 2015 6:20 pm
Gender: None specified

Re: 1212 - Jingle Composing

Postby isaac » Mon Oct 24, 2016 10:45 pm

Eso se resume, a dada una serie de caracteres que tienen asociados valores fraccionales, decir si suman 1. No creo que ese procedimiento sea tan lento. Revisa la implementacion. Al final no pueden haber errores de precision con las comas porque las divisiones se hacen por potencias de 2, eso da "exacto".

humbertodiaz
Posts: 97
Joined: Mon Oct 06, 2014 6:25 am
Gender: None specified

Re: 1212 - Jingle Composing

Postby humbertodiaz » Wed Oct 26, 2016 2:44 am

Yonny, entiendo que este ejercicio tiene el mismo problema que WERTYU. Envie una solucion que detecta '\r' y fallo con un error, que indica que se encontro el caracter.

dpaladin
Posts: 4
Joined: Fri Oct 21, 2016 5:38 am
Gender: None specified

Re: 1212 - Jingle Composing

Postby dpaladin » Sat Nov 05, 2016 5:45 am

No uso división ni decimales, se le asigna un valor entero de 1 a 64 a cada letra, si suman 64 es lo mismo que si suman 1 usando fracciones.
Es mas rápido así.
Un simple for para comparar cada carácter. Es un algoritmo sencillo.

Para leer uso
while (cin >> s, s != "*")

y para imprimir
cout << correct << '\n';

Sigue excediéndose en tiempo. Quiere decir que algún truco de lectura o escritura me hace falta.

Este problema yo lo presente en el concurso real de ACM hace varios años, aunque en Java, y fue uno de los que resolvimos a la primera. Aqui vale solo 0.23.

Alguien lo ha resuelto recientemente, como 1 mes mas o menos?

dpaladin
Posts: 4
Joined: Fri Oct 21, 2016 5:38 am
Gender: None specified

Re: 1212 - Jingle Composing

Postby dpaladin » Sat Nov 05, 2016 6:23 am

Ya encontré lo que necesitaba, el mismo código pero usando las funciones 'gets' o 'scanf', y lo acepto sin problema.
A pesar de que recomiendan no usar esas funciones, supongo que aquí es otro mundo.

HaZard
Posts: 113
Joined: Sun Feb 09, 2014 9:43 am
Location: Camagüey - Cuba
Gender: Male
Contact:

Re: 1212 - Jingle Composing

Postby HaZard » Sat Nov 05, 2016 7:14 pm

prueba enviar tu solución usando cin / cout, pero esta vez incluye las siguientes lineas justo despues de la funcion main(), algo así:

int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);

//aqui iría el resto del código
}

saludos
teruel

User avatar
isaac
Posts: 83
Joined: Mon Oct 26, 2015 6:20 pm
Gender: None specified

Re: 1212 - Jingle Composing

Postby isaac » Sun Nov 06, 2016 9:49 pm

@dpaladin: Yo opino todo lo contrario, creo que son las dos funciones mas eficientes para leer y en ocasiones, simplifican mucho el codigo, pero eso ya es a gusto del consumidor.

HaZard
Posts: 113
Joined: Sun Feb 09, 2014 9:43 am
Location: Camagüey - Cuba
Gender: Male
Contact:

Re: 1212 - Jingle Composing

Postby HaZard » Mon Nov 21, 2016 11:34 am

@isaac si te refieres a las funciones scanf / printf , es cierto que si son mas rapidas a la hora de la lectura, pero cin / cout con los buffer de escritura las superan facilmente cuando hay que escribir un poco, pues el printf va escribiendo hacia la stdout exactamente cuando se le pide, sin embargo el buffer del cout va acumulando la informacion y la escribe de golpe cuando se va llenando el buffer, sin el buffer es notable la ventaja de printf sobre cout, pero esto se debe a que cout esta sincronizado con printf porque trabaja de forma distinta y para no alterar el orden de escritura, y eso lo hace lento.

te garantizo que esta mas que comprobado en la practica, si quieres mira este ejemplo en el prob 1751, dos soluciones identicas

scanf / printf: http://coj.uci.cu/24h/submission.xhtml?id=1024665 TLE Case 3 & Case 4
cin / cout: http://coj.uci.cu/24h/submission.xhtml?id=1024669 AC

PD: si van a usar este modo de lectura - escritura usen "\n" en vez de endl para fin de linea, pues endl fuerza el vaciado del buffer y se pierde lo que se esta buscando que es optimizar a la hora de escribir.
teruel


Return to “Problem set”

Who is online

Users browsing this forum: No registered users and 1 guest