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

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