Есть ответ 👍

23-беттегі тақырыпты оқып,мазмұндау осы беттегі графикалық және математикалық түсініктерге анықтама жазыңдар жаю блогадарение​

203
332
Посмотреть ответы 2

Ответы на вопрос:


я тут конечно не понимаю простииииии❤️


Поступающие вместе с запросами «+» значения можно добавлять в стек. Если запросы «?» обрабатывать суммированием элементов в этом стеке, то получится алгоритм со сложностью O(N2), который набирает 75 баллов. Поэтому необходимо завести второй стек, где i-й элемент хранит суммы чисел из первого стека от начала до i-го элемента. Тогда результатом запроса «?» будет разница двух чисел из второго стека. Сложность такого алгоритма составляет O(N).
var
  c: char;
  n, i, count, k: integer;
  sum, x: array[0..100000] of int64;
begin
  assign(input, 'input.txt');
  reset(input);
  assign(output, 'output.txt');
  rewrite(output);
  readln(n);
  for i:=1 to n do begin
    read(c);
    if c = '-' then begin
      writeln(x[count]);
      dec(count);
    end else if c = '+' then begin
      inc(count);
      read(x[count]);
      sum[count]:=sum[count - 1] + x[count];
    end else if c = '?' then begin
      read(k);
      writeln(sum[count] - sum[count - k]);
    end;
    readln;
  end;
end.

Популярно: Другие предметы