Олимпиадная задача школьного этапа Всероссийской олимпиады школьников по информатике 2015-2016 учебный год.

Условие задачи взято на сайте http://contest.ncstu.ru/
Ох уж эти ученые...

Имя входного файла
input.txt

Имя выходного файла
output.txt

Максимальное время работы на одном тесте
2 секунды

Ограничение по памяти
64 МБ

"...Британские ученые выяснили, что чаще всего взламывают пароли, содержащие группы одинаковых подряд идущих символов, пробелы и звездочки, и гораздо реже пароли, содержащие многоточия..."
Услышав эту новость, Вася крепко задумался: почти все его пароли попадают в группу риска!!! Для того чтобы исправить ситуацию, он решил конвертировать все свои пароли по следующему правилу: от группы одинаковых символов оставить один, два и более пробелов заменить на знак подчёркивания, а две и более звездочки  на многоточие. Напишите программу, которая будет быстро и правильно производить конвертацию пароля.
Формат входных данных:
Задан пароль  непустая строка длиной до 100 000 символов, которая может состоять из строчных букв латинского алфавита, пробелов и символов '*'.
Формат выходных данных:
Выведите пароль, полученный после конвертации.
Пример
input.txt
output.txt

abcd
abcd

aaabbc**
abc...




Описание алгоритма:
Читаем посимвольно до конца файла.
Идём по массиву. Если текущий символ не равен следующему то:
если символ повторялся и является буквой, то выводим этот символ
если символ повторялся и является * то выводим . . .
если символ повторялся и является пробелом, то выводим _
если символ не повторялся, то выводим его
переходим к следующему символу
сбрасываем переменную повторов
если текущий символ равен следующему, то наращиваем переменную повторов
повторяем до конца массива символов.


















program scientist;
var
i,n,schet:integer;
akk:char;
a:array[1..100001] of char;
begin
assign(input,'input.txt');
assign(output,'output.txt');
r
·eset(input);
rewrite(output);
while not eof(input) do begin
inc(i);
read(input,a[i]);
inc(n);
end;
//for i:=1 to n do
//write(a[i]);
akk:=a[1];
schet:=1;
for i:=2 to n+1 do begin
if ord(akk)<>ord(a[i]) then begin
if (schet>=2) and (akk in ['a'..'z']) then
write(output,akk);
if (schet>=2) and (akk='*') then
write(output,'...');
if (schet>=2) and (akk=' ') then
write(output,'_');
if schet=1 then
write(output,akk);
akk:=a[i];
schet:=0;
end;
if ord(akk)=ord(a[i]) then
inc(schet);
end;
close(input);
close(output);
end.