23-беттегі тақырыпты оқып,мазмұндау осы беттегі графикалық және математикалық түсініктерге анықтама жазыңдар жаю блогадарение
203
332
Ответы на вопрос:
Поступающие вместе с запросами «+» значения можно добавлять в стек. Если запросы «?» обрабатывать суммированием элементов в этом стеке, то получится алгоритм со сложностью 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.
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.
Популярно: Другие предметы
-
dima87878718.03.2023 07:40
-
Шоколадка29002.11.2021 00:12
-
Ьрнрг11.11.2021 06:40
-
ArsenhikBRO02.11.2022 03:31
-
sebinavala199702.03.2021 09:04
-
ruchina8921.05.2021 23:51
-
karachevamaria417.09.2020 03:25
-
ZeD31504.01.2021 17:49
-
Alla22109.04.2022 07:25
-
Leralove2005114.04.2021 09:04