Richi Pichichi S.A. P92025


Statement
 

pdf   zip

html

Richi Pichichi S.A. es una empresa dedicada a la venta y compra de acciones: recibe, en tiempo real, peticiones de venta y de compra de acciones, juntamente con el precio al que los clientes están dispuestos a realizar la operación. Si, en un momento dado, Richi Pichichi S.A. descubre que tiene un cliente que quiere vender nv acciones a precio de venta pv, y otro cliente que quiere comprar nc acciones a precio de compra pc mayor o igual que el precio de venta pv, entonces realiza la operación: exactamente n = min(nv, nc) acciones cambian de manos al precio de n·(pc+pv)/2 redondeando hacia abajo (además de una mínima, económica comisión, que no viene al caso). Después de una operación de compra/venta, una de las dos órdenes desaparece de la base de datos de Richi Pichichi S.A., mientras que la otra ve disminuida su petición de compra o venta en n unidades.

Si fuera posible emparejar varios compradores con vendedores, Richi Pichichi S.A. siempre empezará emparejando el comprador que este dispuesto a comprar a mayor precio con el vendedor que acepte vender a menor precio. En caso de empate, tendrá preferencia la orden que lleve más tiempo en las bases de datos de Richi Pichichi S.A. Una orden que ha sido satisfecha parcialmente no pierde antigüedad.

Se pide que, dada una secuencia de órdenes de compra y venta, escribas las operaciones que Richi Pichichi S.A. realizará.

Entrada

Cada juego de pruebas contiene una secuencia de órdenes de compra y venta, cada una de ellas ocupando una línea. Una orden viene dada por un carácter C (orden de compra) o V (orden de venta), un número a que identifica el tipo de acción (de 1 a 1000), el precio p y la cantidad de acciones n, separados por espacios.

Salida

Cada vez que sea posible realizar una operación, deberás escribir el número de línea en el que se dio la orden de compra, el número de línea en el que se dio la orden de venta, el tipo de acción, el número de acciones vendidas y el coste total de la operación. Sigue el formato de los ejemplos.

Autor: Omer Giménez

Public test cases
  • Input

    V 666 100 1
    C 666 101 5
    V 666 97 1
    V 666 99 1
    V 666 96 10
    C 666 99 1
    C 666 98 1
    C 666 96 1
    C 666 94 10
    V 666 96 10
    C 666 100 50
    

    Output

    1 #666 = 100 (1->2)
    1 #666 = 99 (3->2)
    1 #666 = 100 (4->2)
    2 #666 = 197 (5->2)
    1 #666 = 97 (5->6)
    1 #666 = 97 (5->7)
    1 #666 = 96 (5->8)
    5 #666 = 490 (5->11)
    10 #666 = 980 (10->11)
    
  • Input

    C 333 1001 1
    C 333 1000 1
    C 333 1000 1
    C 333 1001 1
    C 333 1000 1
    C 333 1001 1
    V 333 1000 10
    C 333 1000 1
    C 333 1001 1
    C 333 1000 1
    C 333 1001 1
    

    Output

    1 #333 = 1000 (7->1)
    1 #333 = 1000 (7->4)
    1 #333 = 1000 (7->6)
    1 #333 = 1000 (7->2)
    1 #333 = 1000 (7->3)
    1 #333 = 1000 (7->5)
    1 #333 = 1000 (7->8)
    1 #333 = 1000 (7->9)
    1 #333 = 1000 (7->10)
    1 #333 = 1000 (7->11)
    
  • Information
    Author
    Omer Giménez
    Language
    Spanish
    Other languages
    English
    Official solutions
    C++
    User solutions
    C++