Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Можете ещё раз помочь по задаче, только алгоритмом или наводкой на решение

Кирилл Стрикель Профи (756), на голосовании 1 год назад
Перестановкой назовем массив, состоящий из n различных целых чисел от 0 до n − 1 в произвольном порядке. Например, [ 2 , 1 , 0 , 4 , 3 ] является перестановкой, а [ 0 , 1 , 1 ] и [ 0 , 2 ] — нет. На день рождения Пете подарили перестановку p 1 , p 2 , … , p n . Счастье Пети определяется как количество пар ( i , j ) , таких что 1 ≤ i < j ≤ n и p i > p j . Пете разрешено многократно выполнять следующую операцию: переместить первый элемент перестановки в ее конец. Например, если изначально у Пети была перестановка [ 1 , 2 , 0 , 4 , 3 ] , то после применения операции у него будет перестановка [ 2 , 0 , 4 , 3 , 1 ] . Для каждого k от 0 до n − 1 выведите значение счастья Пети, если он выполнит данную операцию k раз. Формат входных данных Первая строка содержит число n ( 2 ≤ n ≤ 3 ⋅ 10 5 ) — размер перестановки. Вторая строка содержит записанные через пробел числа p 1 , p 2 , … , p n — перестановку чисел от 0 до n − 1 . Формат выходных данных В следующих n строках выведите числа a 0 , a 1 , … , a n − 1 , где a k — счастье Пети при условии, что он k раз переместил первый элемент перестановки в ее конец.
Примеры
Входные данные
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
Голосование за лучший ответ
Саня Семенов Оракул (60497) 1 год назад
Один из возможных подходов к решению этой задачи в PHP может быть следующим:
  1. Считываем размер перестановки из первой строки и переводим его в целочисленное значение.
  2. Считываем строку с перестановкой чисел и разбиваем ее на отдельные числа.
  3. Создаем переменную $happiness и инициализируем ее нулем.
  4. Создаем цикл от 0 до $n-1, где $n - размер перестановки.
  5. Внутри цикла проверяем каждую пару (i, j) для текущего значения k.
  6. Если $p[i] > $p[j], увеличиваем $happiness на единицу.
  7. Выводим текущее значение $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().
Кирилл СтрикельПрофи (756) 1 год назад
Это очень долгое решение
Кирилл Иванов, списывание отбора? осуждаю
Афыв Афыв Ученик (182) 1 год назад
Ахахахах чел ты такой смешной
Пытаешься поступить в B', не зная ничего и заливая все задачи на майл ру ответы
Олимпиадные задачи явно не школьного этапа на майл ру
Сомневаюсь, что с задачей на дерево отрезков тебе кто то сможет здесь помочь
Кирилл СтрикельПрофи (756) 1 год назад
ты тупой. эту задачу я решил давно и не до
Афыв Афыв Ученик (182) Кирилл Иванов, конечно, бро
Похожие вопросы