Asuntos Oficiales > Retos
La Carrera
Enko:
Bueno es cierto es facil. No tenia ganas de hacerlo soy BAGO.
Tu entrada es
--- Citar ---4
0 2
2 1
3 8
6 3
--- Fin de la cita ---
El Cuatro al principio lo borre ( seria el numero de coches), no me hizo falta.
Las velocidades de los autos tienen que ser escritas ordebnadas en orden ascendiente por su posición de salida como la has escrito en tu ejemplo.
El codigo fuente esta en Pascal ya que no era mi momento para C, Ultimamente no ando bien con el pero igual lo quiero mucho.
aqui esta el codigo fuente
<!--xc1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>XCODE </td></tr><tr><td id='XCODE'><!--exc1-->
program AdelantamientosDeCoches;
uses
CRT;
const
MaxVel = 100;
MinVel = 1;
MaxAut = 100;
MinAut = 1;
var
Entrada : TEXT;
I : Integer;
J : Integer;
Auto : array [MinAut..MaxAut] of WORD;
Vel : array [MinVel..MaxVel] of WORD;
CantAut : Integer;
Adelantos : Integer;
S : string;
Begin
TextMode(3);
TextColor(White);
WriteLn('Reto propuesto por Binary');
WriteLn('');
TextColor(Blue);
WriteLn('Ingrese el nombre de la entrada NADA para entrada.txt');
Write('Nombre: ');
ReadLn(S);
if length(S)= 0 then S := 'Entrada.txt';
TextColor(4);
ClrScr;
WriteLn('Usando Entrada.txt');
WriteLn('');
TextColor(15);
J := 1;
I := 0;
Adelantos := 0;
Assign(Entrada,S);
Reset(Entrada);
while not EOF(Entrada) do
begin
I := I + 1;
ReadLn(Entrada, Auto[I], Vel[I]);
WriteLn(Auto[I] ,' ', Vel[I]);
CantAut := I;
end;
WriteLn('');
TextColor(Yellow);
for I := 1 to CantAut do
begin
for J := I+1 to CantAut do
begin
TextColor(Blue);
Write(J, ': ');
TextColor(Green);
Write(Auto[J] ,' ', Vel[J]);
TextColor(White);
Write(' vs ');
TextColor(Red);
Writeln(Auto[I] ,' ', Vel[I]);
if (Auto[I] < Auto[J]) and (Vel[I] > Vel[J]) then Adelantos := Adelantos + 1;
end;
end;
TextColor(15);
WriteLn('');
WriteLn('');
WriteLn('Adelantos: ', Adelantos);
WriteLn('CantAutos: ', CantAut);
WriteLn('');
TextColor(4);
WriteLn('EugenioEnko 2004');
ReadKey;
Close(Entrada);
End.
<!--xc2--></td></tr></table><div class='postcolor'><!--exc2-->
Igualmente está en el archivo adjunto con la ejecutable. Probala y me contas.
Binary:
--- Código: Text --- for I := 1 to CantAut do begin for J := I+1 to CantAut do
con esto ya me queda claro que no esta resuelto :D
Tu metodo es O(N^2).
Eso demoraria hasta la eternidad.... 1M ^2 = 1E12... hmmm como una hora.
Busco una solucion N*lgN... si no... seria demasiado facil, no? :D
......
Por lo demas... tu solucion parece buena (aunque no la he probado)
Eso si, trata de encontrar algo mas rapido... porque aunque fueran 100M autos, igual se podria, suerte!
Saludos
Nagisa:
hola!! Para ser de secundaria estas metiendo demasiada caña... :lightsabre:
Yo no voy a ponerme en ello por que como dije tengo las mañanas para estudiar, las tardes para trabajar y las noches para estudiar tb (dormir es un lujo que no puedo permitirme :( ).
De todos modos este parece sencillo. Es contar los coches que empiezan detras de cada uno y con mayor velocidad. Para solucionar el problema de la complejidad cuadratica me imagino que habria que usar un coso tipo arbol o heap o algo asi. No obstante aun no lo he pensado... :whistling:
Es que has escogido una mala epoca para poner retos... Yo estoy preparandome uno de numeros primos. Cuando lo saque yo os lo posteare, pero ya digo que sera por Octubre...
Binary:
TIenes razon, por alli va el reto :D
Por algo le puse facil... es cosa de pensar lo que se busca... conociendo algunas estructuras basicas, no esta de mas... Suerte!
Salu2!
Enko:
Me base en la Ordenacion de Burbuja ya que no tenia ganas de complicarme en velocidad (no decia un límite) pero veo que tendré que cambiarlo por otro, Ordenacion por fusion. ¿No?
Navegación
[#] Página Siguiente
[*] Página Anterior
Ir a la versión completa