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.
Post Reply
User avatar
dovier
Posts: 1097
Joined: 7 years ago
Location: Havana, Cuba
Gender: Male
Cuba

1212 - Jingle Composing

Post by dovier » 6 years ago




dpaladin
Posts: 4
Joined: 2 years ago
Gender: None specified

Re: 1212 - Jingle Composing

Post by dpaladin » 2 years ago

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: 3 years ago
Gender: None specified

Re: 1212 - Jingle Composing

Post by isaac » 2 years ago

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: 4 years ago
Gender: None specified

Re: 1212 - Jingle Composing

Post by humbertodiaz » 2 years ago

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: 2 years ago
Gender: None specified

Re: 1212 - Jingle Composing

Post by dpaladin » 2 years ago

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: 2 years ago
Gender: None specified

Re: 1212 - Jingle Composing

Post by dpaladin » 2 years ago

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: 115
Joined: 4 years ago
Location: Camagüey - Cuba
Gender: Male
Contact:
Cuba

Re: 1212 - Jingle Composing

Post by HaZard » 2 years ago

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: 3 years ago
Gender: None specified

Re: 1212 - Jingle Composing

Post by isaac » 2 years ago

@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: 115
Joined: 4 years ago
Location: Camagüey - Cuba
Gender: Male
Contact:
Cuba

Re: 1212 - Jingle Composing

Post by HaZard » 2 years ago

@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

Post Reply

Return to “Problem set”