Один из возможных подходов к решению этой задачи в PHP может быть следующим:
- Считываем размер перестановки из первой строки и переводим его в целочисленное значение.
- Считываем строку с перестановкой чисел и разбиваем ее на отдельные числа.
- Создаем переменную $happiness и инициализируем ее нулем.
- Создаем цикл от 0 до $n-1, где $n - размер перестановки.
- Внутри цикла проверяем каждую пару (i, j) для текущего значения k.
- Если $p[i] > $p[j], увеличиваем $happiness на единицу.
- Выводим текущее значение $happiness после каждой итерации цикла.
Вот как может выглядеть код для решения этой задачи:
// Чтение размера перестановки
$n = (int) readline();
// Чтение перестановки чисел
$p = array_map('intval', explode(' ', readline()));
// Инициализация переменной happiness
$happiness = 0;
// Цикл от 0 до n-1
for ($k = 0; $k < $n; $k++) {
// Проверка каждой пары (i, j)
for ($i = 0; $i < $n - 1; $i++) {
for ($j = $i + 1; $j < $n; $j++) {
if ($p[$i] > $p[$j]) {
// Увеличение happiness
$happiness++;
}
}
}
// Вывод текущего значения happiness
echo $happiness . PHP_EOL;
// Перемещение первого элемента в конец перестановки
$firstElement = array_shift($p);
array_push($p, $firstElement);
}
?>
Этот код сначала считывает размер перестановки $n и саму перестановку $p. Затем он создает цикл, который будет выполнен $n раз. Внутри этого цикла он проверяет каждую пару (i, j) для текущего значения $k, увеличивая переменную $happiness, если $p[i] > $p[j]. Затем он выводит текущее значение $happiness и перемещает первый элемент массива $p в его конец с помощью функций array_shift() и array_push().
Примеры
Входные данные
5
0 1 2 3 4
Выходные данные
0
4
6
6
4
Входные данные
10
0 8 1 2 7 4 5 3 6 9
Выходные данные
13
22
15
22
27
22
23
22
25
22
Входные данные
5
0 4 1 3 2
Выходные данные
4
8
4
6
4