
Enunciado Code Challenge
La Escuela Superior de Ingeniería y Tecnología dispone de un Centro de Cálculo que cubre las necesidades TIC específicas del alumnado de los estudios de informática, ofreciendo acceso a puestos de ordenadores, servidores y software específico de la Ingeniería Informática.
Cada sala dentro del Centro de Cálculo tiene un número de filas nRows, con nColumns asientos cada una. Cuenta con un pasillo que suele separar los asientos en dos bloques, ubicándose entre los asientos aisleSeat y aisleSeat + 1. Sin embargo, existe también la posibilidad de que se encuentre en uno de los dos laterales, dejando las filas “intactas”.
Al entrar, vemos que ya hay sitios ocupados por otros compañeros, y tenemos varios grupos de tamaño groupSize que quieren entrar. Se pide calcular el número máximo de grupos de ese tamaño que caben en la sala, teniendo en cuenta que un grupo no puede dejar miembros solos (sin compañeros de su mismo grupo) en uno de los bloques separados por el pasillo.
El objetivo es implementar un método que satisfaga los tests presentes en en el fichero main.cc y que tenga la siguiente forma:
int getNumberOfGroups(int nRows, int nColumns, int aisleSeat, vector<pair<int, int>> positions, int groupSize);
positions indica los asientos ocupados en la sala, y está definido con un vector que contiene en su interior pares de enteros positivos. El primer valor del par representa la fila, y el segundo la columna. Los pares que se encuentran en el vector están ordenados de menor a mayor, teniendo como criterio principal el número de la fila, y después el número de la columna.
Se deben asumir las siguientes condiciones:
1 <= nColumns
1 <= nRows
1 < groupSize
0 <= aisleSeat <= nColumns
Enlace de interés