Sobes.tech
Middle

/* Locurile din cinematograf sunt aranjate într-un rând. Spectatorul care tocmai a venit alege un loc, pentru a sta cât mai departe de ceilalți spectatori din rând. Adică, distanța de la locul unde va sta până la cel mai apropiat Se garantează că întotdeauna există locuri libere în rând și deja stau cel puțin Scrie o funcție care, pe baza unui rând de locuri (un array de zerouri și unu) Exemplu: Intrare: [1, 0, 0, 0, 1] Ieșire: 2 Intrare: [1, 0, 1, 0, 0, 1, 0, 0, 0, 1] Ieșire: 2 Intrare: [1, 0, 1, 0] Ieșire: 1 */

sobes.tech AI

Răspuns de la AI

Задача — найти место (индекс) в ряду, где новый зритель сядет максимально далеко от уже занятых мест.

Идея решения:

  • Пройти по ряду, найти все свободные места (0).
  • Для каждого свободного места вычислить расстояние до ближайшего занятого места (1).
  • Выбрать место с максимальным таким расстоянием.

Пример реализации на Go:

func maxDistanceSeat(row []int) int {
    n := len(row)
    maxDist := -1
    seatIndex := -1

    for i := 0; i < n; i++ {
        if row[i] == 0 {
            // Найдем расстояние до ближайшего занятого места
            dist := n
            for j := 0; j < n; j++ {
                if row[j] == 1 {
                    d := abs(i - j)
                    if d < dist {
                        dist = d
                    }
                }
            }
            if dist > maxDist {
                maxDist = dist
                seatIndex = i
            }
        }
    }
    return seatIndex
}

func abs(x int) int {
    if x < 0 {
        return -x
    }
    return x
}

Пример использования:

row := []int{1, 0, 0, 0, 1}
seat := maxDistanceSeat(row) // seat == 2

Таким образом, функция возвращает индекс места, где зритель будет сидеть максимально далеко от других.