Вторник, 08.10.2024, 20:59
Информатика и математика в Плесской школе
Приветствую Вас Гость | RSS
Меню сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа

Задание предложенное на дистанционной олимпиаде по информатике 2014 года.

Радиотелескоп фиксирует некоторый дискретный радиосигнал. Каждое значение сигнала представляет собой целое положительное число от 1 до 108. Количество измерений N может быть очень большим (3 <= N <= 106). Ваша задача провести первичную фильтрацию сигнала от импульсных помех согласно следующему алгоритму – если какое-либо значение сигнала более чем в 2 раза больше, чем среднее арифметическое из значения этого сигнала и двух его соседних значений (одно – слева, другое – справа), то такое значение сигнала считается помехой и удаляется из последовательности. В результате должна получиться последовательность, в которой нет помех. Если результирующая последовательность имеет нулевую длину - вывести "0".

Входные данные – в первой строке вводится число N, далее в N строках по одному значению сигнала в каждой строке.
Выходные данные – по одному значению отфильтрованного сигнала в каждой строке.

Примеры:

4
1
1000
1
1

1

1

1

4
1
1000
100
2

1

2

4
1
1
1
1000

 

1

1

1

5
1
10
100
1000
1

1

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Решение :

program n1;
uses crt;
var i,n,a,b,c,m,flag:integer;
f:text;
sr:real;
begin
flag:=0;
assign (f,'input.txt');
reset(f);
readln(f,n);
writeln(n);

readln(f,a);
readln(f,b);
readln(f,c);
if a<((a+b)/2)*2 then begin
                       writeln (a);  
// первый элемент
                       flag:=1;
                      end;
sr:=((a+b+c)/3)*2;
if b<sr then begin
               writeln (b);  
// второй элемент
               flag:=1;
             end;
while not eof(f) do   begin
a:=b;
b:=c;
readln(f,c);
sr:=((a+b+c)/3)*2;
if b<sr then begin
               writeln (b);  
// остальные до предпоследнего
               flag:=1;
             end;
end;
if c<((c+b)/2)*2 then begin
                      writeln (c);  
// предпоследний
                      flag:=1;
                      end;
close (f);
if flag=0 then writeln(flag);
end.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Поиск
Календарь
«  Октябрь 2024  »
ПнВтСрЧтПтСбВс
 123456
78910111213
14151617181920
21222324252627
28293031
Архив записей
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Учительский портал
    Copyright MyCorp © 2024