Asuntos Oficiales > Retos

 La Carrera

<< < (3/4) > >>

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

[0] Índice de Mensajes

[#] Página Siguiente

[*] Página Anterior

Ir a la versión completa