Sobes.tech
Middle

/* Кинотеатрда урындар бир қатарда жайгашкан. Жаңы келген көрүүчү орунду тандоодо, бардык көрүүчүлөрдөн эң алыс отурууга аракет кылат. Демек, отурган жеринен эң жакын жерге чейинки аралык, Ар дайым бош орундар бар экенин жана кеминде Берилген орундар катары (нөлдөр жана бирлерден турган массив) Мисал: Киргизүү: [1, 0, 0, 0, 1] Чыгуу: 2 Киргизүү: [1, 0, 1, 0, 0, 1, 0, 0, 0, 1] Чыгуу: 2 Киргизүү: [1, 0, 1, 0] Чыгуу: 1 */

sobes.tech AI

Ҷавоб аз 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

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