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

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