iulia085
11.06.2022 14:09

Слияние отрезков
Даны два отсортированных массива A, B. Нужно обработать запросы следующего вида:

1 l r - Удалить подотрезок A[l, r], добавить его в конец B, и затем отсортировать B.

2 l r - Удалить подотрезок B[l, r], добавить его в конец A, и затем отсортировать A.

Необходимо вывести получившиеся массивы A, B.

Формат входных данных
Первая строка ввода содержит одно целое число N (0 ≤ N ≤ 5*105) - размер массива A.

Вторая строка содержит N целых чисел ai (1 ≤ a1 ≤ a2 ≤ ... ≤ an ≤ 109) - содержимое массива A.

Третья строка ввода содержит одно целое число M (0 ≤ M ≤ 5*105) - размер массива B.

Четвёртая строка содержит M целых чисел bi (1 ≤ b1 ≤ b2 ≤ ... ≤ bm ≤ 109) - содержимое массива B.

Пятая строка ввода содержит одно целое число Q (1 ≤ Q ≤ 9*105) - число запросов.

Следующие Q строк содержат по три целых числа t, l, r (t равно 1 или 2, 1 ≤ l ≤ r) - описание очередного запроса.

Гарантируется, что все запросы корректны, то есть при t = 1 всегда существует A[l, r] и при t = 2 всегда существует B[l, r].

Формат результата
В первой строке вывода должно быть одно целое число N' - итоговый размер массива A.

Во второй строке вывода должны быть N' целых чисел - содержимое итогового массива A.

В третьей строке вывода должно быть одно целое число M' - итоговый размер массива B.

В четвёртой строке вывода должны быть M' целых чисел- содержимое итогового массива B.

Примеры
Входные данные
4
1 3 5 7
5
2 4 6 7 8
5
1 1 1
2 2 4
2 1 3
1 1 7
2 2 5
Результат работы
6
2 3 4 5 7 8
3
1 6 7
Входные данные
1
1
0

1
1 1 1
Результат работы
0

1
1
Примечания
Рассмотрим первый пример из условия:
После первого запроса A = [3, 5, 7], B = [1, 2, 4, 6, 7, 8];
После второго запроса A = [2, 3, 4, 5, 6, 7], B = [1, 7, 8];
После третьего запроса A = [1, 2, 3, 4, 5, 6, 7, 7, 8], B = [];
После четвёртого запроса A = [7, 8], B = [1, 2, 3, 4, 5, 6, 7];
После пятого запроса A = [2, 3, 4, 5, 7, 8], B = [1, 6, 7].

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
bocmanlera
25.02.2020 10:56
1)var ar:array of integer;
max,min,s,i,n,maxi,mini:integer;
begin;
randomize;
max:=-1;
min:=101;
readln(n);
setlength(ar,n+1);
writeln('Array:');
for i:=1 to n do
 begin;
  ar[i]:=random(100);
  write(ar[i]:4);
  if max<ar[i] then
   begin;
    max:=ar[i];
    maxi:=i;
   end;
  if min>ar[i] then
   begin;
    min:=ar[i];
    mini:=i;
   end;
  s:=s+ar[i];
 end;
ar[maxi]:=s;
ar[mini]:=s;
writeln;
writeln('Final array:');
for i:=1 to n do
write(ar[i]:4);
end.
2)var ar:array of integer;
k,h,i,s:integer;
f:real;
begin;
randomize;
readln(h);
setlength(ar,h+1);
writeln('Array:');
for i:=1 to h do
 begin;
  ar[i]:=random(100)-50;
  write(ar[i]:4);
  if (ar[i]>0) and (ar[i] mod 2=0) then
   begin;
    inc(k);
    s:=s+ar[i];
   end;
 end;
f:=s/k;
writeln;
writeln('Result:',f);
end.
0,0(0 оценок)
Ответ:
ssyyppeerrmmaax
09.11.2022 05:36
//PascalABC.NET 3.2 сборка 1318

var
  l, r, counter, i: integer;

function DifNum(a: integer): integer;
var  se: set of integer;
  i: integer;
begin
  while a > 0 do
  begin
    if a mod 10 in se then
    begin
      DifNum := 0;
      exit;
    end
    else include(se, a mod 10);
    a := a div 10;
  end;
  DifNum := 1;
end;

begin
  read(l, r);
  for i := l to r do
    counter += DifNum(i);
  writeln(counter);
end.

//Альтернативное решение на Паскале

Var
  l,r:integer;
begin
read(l,r);
writeln(range(l,r).where(x -> x.tostring.toarray.distinct.count=length(x.tostring)).Count);
end.

//Dev-C++ 5.11 (C)

#include <stdio.h>
#include <malloc.h>

int DifNum(int);

int main(void)
 {int l,r,counter=0;
 scanf("%d %d",&l,&r);
 for(int i=l;i<=r;i++)
  counter+=DifNum(i);
 printf("%d",counter);
return 0;}

int DifNum(int a)
 {int k=1,*nums;
 nums=(int*)malloc(k*sizeof(int));
 nums[0]=-1;
 while(a>0)
  {for(int i=0;i<k;i++)
   if(a%10==nums[i])
    return 0;
  k++;
  nums=(int*)malloc(k*sizeof(int));
  nums[k-1]=a%10;
  a/=10;}
 free(nums);
 return 1;}

Пример ввода:
1 12
Пример вывода:
11
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота