олимпиада по информатике 5. Agar.io
Ограничение времени 1 секунда
Ограничение памяти 512Mb
Ввод стандартный ввод или input.txt
Вывод стандартный вывод или output.txt
В многопользовательской игре Agar.io игроки управляют бактериями. У каждой бактерии есть размер — целое положительное число. Если встречаются две бактерии разного размера, то бактерия большего размера поглощает меньшую бактерию. При этом меньшая бактерия исчезает, а размер большей бактерии увеличивается на размер меньшей бактерии. Если встречаются две бактерии равного размера, то ничего не происходит. Побеждает игрок, чья бактерия останется на игровом поле одна.
В игре участвуют n игроков, вам даны размеры их бактерий. Определите, какие из игроков имеют возможность выиграть в этой игре.
Формат ввода
Программа получает на вход целое число n, 1≤ n≤ 105 — количество игроков. Следующие n строк содержат по одному числу ai — размеры бактерий, 1≤ ai≤ 109. Числа ai заданы в порядке неубывания.
Формат вывода
Программа должна вывести n чисел равных «0» или «1», по одному числу в строке. Если i-е число равно 0, то это означает, что i-й игрок (размер бактерии которого первоначально был равен ai) ни при каких обстоятельствах не может выиграть в этой игре. Если i-е число равно 1, то это означает, что i-й игрок имеет возможность выиграть в этой игре.
Пример
Ввод Вывод
4
1
1
3
4
0
0
1
1
Примечания
В примере из условия 4 бактерии размерами 1, 1, 3, 4. Бактерии размером 1 никого не могут съесть, поэтому не могут выиграть. Бактерия размером 4 может съесть всех. Бактерия размером 3 может съесть по очереди две бактерии размером 1. Тогда её размер станет 5, после этого она сможет съесть бактерию размером 4 и выиграть. ответ: 0, 0, 1, 1.
|
Решение, правильно работающее только для случаев, когда n≤ 100 и все ai≤ 106, будет оцениваться в
var
t:boolean;
d:integer;
begin
t := true;
d := 2;
while t and (d*d <= x) do
begin
if x mod d = 0 then
t := false;
d := d + 1
end;
prime := t
end;
function order(x:integer):boolean;
var
t:boolean;
d:integer;
begin
d := -1;
repeat
t := x mod 10 > d;
d := x mod 10;
x := x div 10
until not t or (x = 0);
order := t
end;
var
t:boolean;
i,k,n:integer;
begin
t := false;
read(k,n);
for i := k to n do
if prime(i) then
if order(i) then
begin
write(i,' ');
t := true
end;
if not t then
write(0)
end.
var s,v,t,a:real;
begin
writeln('Введите скорость, ускорение и время соотвественно');
read(v,a,t);
s:=v*t+(a*sqr(t))/2;
writeln('Расстояние S = ',s);
end.
Задание №2
var a,b,c,d,m,n:integer;
begin
writeln('Введите ширину и высоту комнаты');
read(a,b);
writeln('Введите размеры окна');
read(c,d);
writeln('Введите размеры двери');
read(m,n);
writeln('Площадь стен для оклеивания обоями = ',a*b-c*d-m*n);
end.
Задание №3
var a,b:real;
begin
writeln('Введите два числа');
read(a,b);
writeln('Среднее арифметическое кубов этих чисел = ',(power(a,3)+power(b,3))/2);
writeln('Среднее геометрическое модулей этих чисел = ',sqrt(abs(a*b)));
end.
Задание №4
var x:real;
begin
writeln('Введите ребро куба');
read(x);
writeln('Площадь грани = ',sqr(x));
writeln('Площадь полной поверхности = ',6*sqr(x));
writeln('Объем куба = ',power(x,3));
end.
Задание №5
var r1,r2:real;
begin
writeln('Введите внешний и внутренний радиус');
read(r1,r2);
if r1<r2 then writeln('Внешний радиус должен быть больше внутреннего') else
writeln('Площадь кольца = ', Pi*sqr(r1)-Pi*sqr(r2));
end.