М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
Mrenderstail288
Mrenderstail288
22.06.2022 04:21 •  Информатика

Задача 5: Числа В многопользовательской игре Agar.io игроки управляют бактериями. У каждой бактерии есть размер — целое положительное число. Если встречаются две бактерии разного размера, то бактерия большего размера поглощает меньшую бактерию. При этом меньшая бактерия исчезает, а размер большей бактерии увеличивается на размер меньшей бактерии. Если встречаются две бактерии равного размера, то ничего не происходит. Побеждает игрок, чья бактерия останется на игровом поле одна. В игре участвуют N игроков, вам даны размеры их бактерий. Определите, какие из игроков имеют возможность выиграть в этой игре. Входные данные Программа получает на вход целое число N, 1 ≤ N ≤ 105 — количество игроков. Следующие N строк содержат по одному числу ai —размеры бактерий, 1 ≤ ai ≤ 109. Числа ai заданы в порядке неубывания. Выходные данные Программа должна вывести N чисел равных «0» или «1», по одному числу в строке. Если i-е число равно 0, то это означает, что i-й игрок (размер бактерии которого первоначально был равен ai) ни при каких обстоятельствах не может выиграть в этой игре. Если i-е число равно 1, то это означает, что i-й игрок имеет возможность выиграть в этой игре. Система оценивания Решение, правильно работающее только для случаев, когда N ≤ 100 и все ai ≤ 106, будет оцениваться в

👇
Ответ:
ivoleg13
ivoleg13
22.06.2022

N = int(input())

if N == 1:

   exit(0)

 

bacteria = [0] * N

for i in range(0, N):

   bacteria[i] = int(input())

 

prefix_sum = [bacteria[0]] * N

for i in range(1, N):

   prefix_sum[i] = prefix_sum[i - 1] + bacteria[i]

ans = [0] * N

if bacteria[N-1] > bacteria[0]:

   ans[N - 1] = 1

for i in reversed(range(2, N)):

   if ans[i] == 1:

       prev = i - 1

       if prefix_sum[prev] > bacteria[i] and bacteria[0] < bacteria[prev]:

           ans[prev] = 1

for i in range(N):

   print(ans[i])

Объяснение:

g++

4,6(13 оценок)
Открыть все ответы
Ответ:
vjfduxhufsnks46
vjfduxhufsnks46
22.06.2022
Program gt2;
var i,j,s:integer;
a:array[1..4,1..4]of integer;
begin
randomize;
for i:=1 to 4 do
for j:=1 to 4 do
a[i,j]:=random(7)+12;
for i:=1 to 4 do
begin
s:=0;
for j:=1 to 4 do
s:=s+a[j,i];
writeln(s);
end;
end.

program gt3;
var i,j,s:integer;
a:array[1..7,1..7]of integer;
begin
randomize;
for i:=1 to 7 do
for j:=1 to 7 do
a[i,j]:=random(7)+12;
for i:=1 to 7 do
begin
s:=0;
for j:=1 to 7 do
if(a[j,i]<14)then s:=s+1;
writeln(s);
end;
end.

program gt4;
var i,j,p:integer;
a:array[1..3,1..3]of integer;
begin
for i:=1 to 3 do
for j:=1 to 3 do
read(a[i,j]);
for i:=1 to 3 do
begin
p:=a[i,1];
a[i,1]:=a[i,2];
a[i,2]:=p;
end;
for i:=1 to 3 do
begin
for j:=1 to 3 do
begin
write(a[i,j],' ');
end;
writeln;
end;
end.
4,7(50 оценок)
Ответ:
msganny
msganny
22.06.2022
VAR
i, j: Integer;
a: Array [1..10] of Array [1..10] of Integer;
BEGIN
for i := 1 to 10 do
for j := 1 to 10 do a[i][j] := j*j;

for i := 1 to 10 do begin
for j := 1 to 10 do Write(a[i][j],' '); Writeln; end;
END.

VAR
i, j: Integer;
a: Array [0..4] of Array [1..4] of Integer;
BEGIN
for i := 1 to 4 do
for j := 1 to 4 do begin
a[i][j] := Random(7)+12;
a[0][j] := a[0][j] + a[i][j];
end;

for i := 1 to 4 do begin
for j := 1 to 4 do Write(a[i][j],' '); Writeln; end;

Writeln;
for i := 1 to 4 do Write(a[0][i],' ');
END.

VAR
i, j: Integer;
a: Array [0..7] of Array [1..7] of Integer;
BEGIN
for i := 1 to 7 do
for j := 1 to 7 do begin
a[i][j] := Random(7)+12;
if (a[i][j] < 14) then Inc(a[0][j]);
end;

for i := 1 to 7 do begin
for j := 1 to 7 do Write(a[i][j],' '); Writeln; end;

Writeln;
for i := 1 to 7 do Write(a[0][i],' ');
END.

VAR
i, j: Integer;
a: Array [0..3] of Array [1..3] of Integer;
BEGIN
for i := 1 to 3 do
for j := 1 to 3 do Read(a[i][j]);

for i := 1 to 3 do begin
a[0][i] := a[1][i]; a[1][i] := a[2][i];
a[2][i] := a[0][i]; end;

for i := 1 to 3 do begin
for j := 1 to 3 do Write(a[i][j],' '); Writeln; end;
END.

VAR
i, j, m: Integer;
a: Array [1..5] of Array [1..5] of Integer;
BEGIN
for i := 1 to 5 do
for j := 1 to 5 do begin
a[i][j] := Random(5)+1;
end;

for i := 1 to 5 do begin
for j := 1 to 5 do Write(a[i][j],' '); Writeln; end;

m := 6;
for i := 1 to 5 do
for j := 1 to 5 do
if (i > j)and(m > a[i][j]) then m := a[i][j];

Writeln(a[i][j]);
END.
4,8(79 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ