Help, please!! В одном известном магазине случилась распродажа, однако администрация не учла одну проблему: в магазине всего одна касса! Сразу после начала распродажи возле кассы организовалась
длинная очередь. Никто не любит очереди, поэтому у покупателей постепенно возрастает уровень
агрессии. От вас требуется рассмотреть процесс продвижения очереди.
Могут происходить события трёх типов:
1. В конец очереди встал человек с уровнем агрессии a;
2. Первый человек в очереди начал ругаться с кассиром, в результате чего уровень его агрессии
увеличился на x, а уровень агрессии каждого из остальных людей в очереди (если в очереди
стоит не один человек) увеличился на y;
3. Первый человек в очереди оплатил покупку и ушёл из магазина.
От вас требуется обработать N событий. Будем считать, что изначально очередь пуста. Так как
администрация магазина заботится о своей репутации, им важно знать, насколько агрессивными их
покупатели уходят из магазина. Поэтому для каждого события третьего типа нужно определить
уровень агрессии человека, который ушёл из магазина.
Формат входных данных
В первой строке записано одно число N — количество событий (2 6 N 6 300000).
В каждой из следующих N строк содержится описание очередного события:
• 1 a, если произошло событие первого типа;
• 2 x y, если произошло событие второго типа;
• 3, если произошло событие третьего типа.
Для всех событий верно, что 1 6 a, x, y 6 109
. Гарантируется, что события второго и третьего
типов происходят только в том случае, если в очереди есть хотя бы один человек. Также гарантируется, что после N событий в очереди не останется ни одного человека. Возможны случаи, когда
первый человек в очереди несколько раз подряд ссорится с кассиром.
Формат выходных данных
Для каждого запроса третьего типа выведите одно число — уровень агрессии человека, который
ушёл из магазина. Каждое число следует выводить на отдельной строке.
Пример
стандартный ввод стандартный вывод
8
1 4
1 2
2 6 1
3
2 10 20
1 1
3
3
output
10
13
1
Замечание
Сначала в очередь встали два человека с уровнями агрессии 4 и 2 соответственно. Затем первый
человек поссорился с кассиром, после чего уровни агрессии людей стали равны 10 и 3. После этого
первый человек ушёл из очереди, а второй поссорился с кассиром. Теперь уровень его агрессии
равен 13. Затем в очередь встал человек с уровнем агрессии 1, после чего оба человека ушли из
магазина.
Результат в приложении
Объяснение:
int main()
{
int x[20] = { 1,-2,3,-4,5,-6,-7,3,-1,14,33,45,-1,13,-8,3,2,8,90,11 };
int y[20];
int n = 0;
for (int i = 1; i < 19; i++)
{
if (x[i - 1] < 0 && x[i + 1] < 0)
{
bool exists = false;
for (int j = 0; j < n; j++)
{
if (y[j] == x[i])
{
exists = true;
break;
}
}
if (!exists)
{
y[n] = x[i];
n++;
}
}
}
if (n == 0)
std::cout << "Нет элементов" << std::endl;
else
{
for (int i = 0; i < n; i++)
{
std::cout << (y[i]) << " ";
}
std::cout << std::endl;
}
_getch(); //Экран не закрывается, пока не нажата любая клавиша
return 0;
}
1. Просматривая строку массива от первого элемента, найти минимальный элемент и поместить его на место первого элемента, а первый — на место минимального.
2. Просматривая строку массива от второго элемента, найти минимальный элемент и поместить его на место второго элемента, а второй — на место минимального.
3. И так далее до предпоследнего элемента.
Решение:
//Pascal
const
n = 7;
var
a: array[1..n, 1..n] of integer;
i, j, min, ind: integer;
//Заполнение массива сл. числами и вывод на экран
begin
for i := 1 to n do
begin
for j := 1 to n do
begin
a[i, j] := random(100);
write(a[i, j]:4);
end;
writeln;
end;
//Сортировка строки матрицы прямым выбором
for i := 1 to n - 1 do
begin
min := a[4, i];
ind := i;
for j := i + 1 to n do
if a[4, j] < min then
begin
min := a[4, j];
ind := j;
end;
a[4, ind] := a[4, i];
a[4, i] := min;
end;
writeln;
//вывод отсортированной строки
for j := 1 to n do
begin
write(a[4, j]:4);
end;
end.