Equipos de programación balanceados solidariamente X71059


Statement
 

pdf   zip

html

Una compañía multinacional participa cada año en las competiciones de programación CodeStrengths con unos cuantos equipos de programadores. Cuando organiza los equipos, siempre crea un primer equipo con los mejores programadores de la compañía, después un segundo equipo con los restantes mejores programadores de la compañía, y así sucesivamente.

Este año, con el ánimo de hacer un gesto en pro de la concordia y la solidaridad entre los pueblos del mundo, la compañía ha decidido formar equipos con solo programadores de su staff que sean Rusos y Estadounidenses, de modo que, si puede ser, los equipos esten formados por programadores de ambos grupos y de forma balanceada.

De todos modos, el primer criterio para formar un equipo continúa siendo el nivel de programación. Por ejemplo, el primer equipo no puede tener a un programador que sea peor que el de otro que no esté en el primer equipo.

Como segundo criterio, se intentará que el equipo a formar esté tan balanceado como sea posible. Por ejemplo, si los equipos están formados por cuatro personas, se prefiere un equipo con dos Rusos y dos Estadounidenses a un equipo con tres Rusos y un Estadounidense, y esto último es preferible a un equipo con cuatro Rusos y ningún Estadounidense.

Como último criterio, los programadores se escojen por nombre en orden lexicográfico (orden estandar de comparación entre strings).

Entrada

La entrada tiene varios casos. La primera linea de cada caso tiene un natural positivo k, que es el número de miembros de cada equipo a formar. En una segunda linea hay un natural positivo n1, que es el número de programadores Rusos. Después vienen n1 lineas, cada una con el nombre de un programador Ruso y un natural positivo indicando su nivel de programación. Estas lineas están ordenadas de mayor a menor por nivel de programación, y en orden lexicográfico para programadores con el mismo nivel. Después hay una nueva linea con un natural positivo n2, que es el número de programadores Estadounidenses. Después vienen n2 líneas con la información de los programadores Estadounidenses, siguiento exactamente el mismo formato que para los programadores Rusos.

Se garantiza que n1+n2 es múltiple de k, y que no hay repeticiones de nombres. En particular, un nombre de una lista no aparece en la otra lista.

Salida

Para cada caso, hay que escribir (n1+n2)/k lineas. La primera contendrá la lista de nombres del primer equipo en orden lexicográfico. La segunda contendrá la lista de nombres del segundo equipo en orden lexicográfico. I así sudesivamente. Después de la salida de cada caso hay una linea en blanco.

Observación

Evaluación sobre 10 puntos:

  • Solución lenta: 5 puntos.
  • Solución rápida: 10 puntos.

Entendemos como solución rápida una que es correcta, de coste lineal (se permite coste (n1+n2)log(k) para poder aplicar un sort a los miembros de cada equipo) y capaz de superar los juegos de pruebas públicos y privados. Entendemos como solución lenta una que no es rápida, pero es correcta y capaz de superar los juegos de pruebas públicos.

Public test cases
  • Input

    2
    3
    Mikhail 7
    Elena 6
    Irina 3
    5
    Barbara 8
    Jennifer 7
    Karen 5
    James 2
    Nancy 1
    4
    2
    Elizaveta 4
    Vera 4
    10
    Betty 8
    Christopher 8
    Mary 6
    Michael 6
    John 4
    Barbara 3
    David 3
    Patricia 2
    Sarah 2
    Anthony 1
    5
    2
    Irina 5
    Natalia 3
    8
    David 7
    Barbara 6
    Nancy 5
    Matthew 4
    Sandra 4
    John 3
    James 2
    Richard 1
    5
    3
    Yevgeny 7
    Nikolai 5
    Danyl 4
    2
    Barbara 1
    Susan 1
    3
    4
    Yevgeny 7
    Victoria 6
    Konstantin 4
    Sergey 1
    5
    Anthony 8
    Sandra 7
    Susan 5
    William 2
    Linda 1
    1
    5
    Sofia 5
    Nikolai 4
    Adelina 2
    Alexander 2
    Mikhail 1
    8
    Richard 8
    Thomas 7
    Patricia 5
    William 5
    Charles 3
    Jennifer 2
    Mary 1
    Sarah 1
    4
    5
    Daria 5
    Xenia 5
    Alexey 4
    Denis 2
    Maksim/Maxim 1
    3
    Betty 6
    Lisa 6
    Barbara 5
    1
    6
    Roman 8
    Anastasia 6
    Irina 5
    Alexey 3
    Danyl 3
    Natalia 3
    2
    Anthony 7
    Sarah 7
    3
    3
    Victoria 6
    Danyl 3
    Mikhail 2
    6
    Betty 8
    Lisa 8
    Patricia 7
    Nancy 6
    Elizabeth 3
    William 3
    3
    2
    Nadezhda 7
    Sergey 5
    1
    William 4
    5
    1
    Artyom 4
    4
    Jessica 8
    Susan 6
    Barbara 5
    Sarah 3
    1
    10
    Maksim/Maxim 8
    Xenia 8
    Elena 7
    Elizaveta 7
    Svetlana 7
    Danyl 6
    Alexander 4
    Polina 4
    Nikita 3
    Roman 3
    1
    Lisa 4
    5
    5
    Elena 6
    Yevgeny 6
    Nadezhda 3
    Roman 3
    Irina 2
    5
    Elizabeth 8
    Nancy 8
    Charles 6
    Joseph 2
    Matthew 1
    3
    5
    Svetlana 8
    Artyom 7
    Sofia 6
    Ivan 3
    Sergey 3
    4
    Jessica 8
    William 7
    Jennifer 2
    Joseph 2
    2
    11
    Adelina 7
    Elena 6
    Nikolai 6
    Anastasia 5
    Sergey 5
    Svetlana 4
    Artyom 3
    Mikhail 3
    Yevgeny 2
    Danyl 1
    Ivan 1
    1
    John 7
    5
    2
    Nadezhda 5
    Alexander 1
    3
    Matthew 8
    Lisa 2
    Sarah 1
    4
    1
    Arina 7
    3
    Lisa 2
    Daniel 1
    Matthew 1
    4
    2
    Xenia 3
    Dmitry 1
    2
    Barbara 6
    John 4
    1
    4
    Konstantin 6
    Adelina 4
    Alexander 3
    Xenia 2
    2
    Charles 6
    Jessica 3
    3
    8
    Mikhail 5
    Nikolai 5
    Polina 5
    Konstantin 4
    Daria 3
    Elena 3
    Roman 3
    Ivan 2
    4
    Jennifer 8
    Joseph 5
    Lisa 5
    Sandra 2
    

    Output

    Barbara Mikhail
    Elena Jennifer
    Irina Karen
    James Nancy
    
    Betty Christopher Mary Michael
    Barbara Elizaveta John Vera
    Anthony David Patricia Sarah
    
    Barbara David Irina Matthew Nancy
    James John Natalia Richard Sandra
    
    Barbara Danyl Nikolai Susan Yevgeny
    
    Anthony Sandra Yevgeny
    Konstantin Susan Victoria
    Linda Sergey William
    
    Richard
    Thomas
    Patricia
    Sofia
    William
    Nikolai
    Charles
    Adelina
    Alexander
    Jennifer
    Mary
    Mikhail
    Sarah
    
    Betty Daria Lisa Xenia
    Alexey Barbara Denis Maksim/Maxim
    
    Roman
    Anthony
    Sarah
    Anastasia
    Irina
    Alexey
    Danyl
    Natalia
    
    Betty Lisa Patricia
    Danyl Nancy Victoria
    Elizabeth Mikhail William
    
    Nadezhda Sergey William
    
    Artyom Barbara Jessica Sarah Susan
    
    Maksim/Maxim
    Xenia
    Elena
    Elizaveta
    Svetlana
    Danyl
    Alexander
    Lisa
    Polina
    Nikita
    Roman
    
    Charles Elena Elizabeth Nancy Yevgeny
    Irina Joseph Matthew Nadezhda Roman
    
    Artyom Jessica Svetlana
    Ivan Sofia William
    Jennifer Joseph Sergey
    
    Adelina John
    Elena Nikolai
    Anastasia Sergey
    Artyom Svetlana
    Mikhail Yevgeny
    Danyl Ivan
    
    Alexander Lisa Matthew Nadezhda Sarah
    
    Arina Daniel Lisa Matthew
    
    Barbara Dmitry John Xenia
    
    Charles
    Konstantin
    Adelina
    Alexander
    Jessica
    Xenia
    
    Jennifer Joseph Mikhail
    Lisa Nikolai Polina
    Daria Elena Konstantin
    Ivan Roman Sandra
    
    
  • Information
    Author
    PRO1
    Language
    Spanish
    Translator
    Original language
    Catalan
    Other languages
    Catalan English
    Official solutions
    C++
    User solutions
    C++