Em computação, compressão de arquivos é o processo de reduzir o tamanho de arquivos. Uma técnica simples mas eficiente de compressão para alguns tipos de arquivos é RLE, cujo o nome é derivado das letras iniciais do nome em inglês, que pode ser traduzido por codificação por comprimento de repetições.
Em RLE, cada sequência de valores repetidos no arquivo é substituída
pelo número de repetições seguido do valor a ser repetido. Por exemplo,
a sequência ‘AAAAAA’ seria substituída por
‘6 A’. Se o arquivo tem muitas sequências de valores
repetidos, a técnica RLE é bem eficiente (por exemplo, considere um
arquivo de imagem branco e preto em que grande parte dos valores é
branco). Por outro lado, se o arquivo não possui muitas repetições, a
técnica RLE pode aumentar o tamanho do arquivo, ao invés de
diminuir.
Nesta tarefa, dada uma cadeia de caracteres, você deve escrever um programa que produza a sequência de caracteres comprimida com a técnica RLE.
A primeira linha contém um inteiro , o comprimento da cadeia de caracteres. A segunda linha contém a cadeia de caracteres, com caracteres .
Seu programa deve produzir uma única linha, contendo a cadeia de caracteres codificada com a técnica RLE. A codificação consiste em uma sequência de pares, separados por espaços, em que cada par é um inteiro (indicando o número de repetições), seguido de um espaço, seguido do caractere a ser repetido.
A tarefa vale pontos. Estes pontos estão distribuídos em subtarefas, cada uma com suas restrições adicionais às definidas acima:
a’ ou
‘b’ para todo
(veja exemplo 3).Seu programa pode resolver corretamente todas ou algumas das subtarefas (elas não precisam ser resolvidas em ordem). Sua pontuação final na tarefa é a soma dos pontos de todas as subtarefas resolvidas corretamente por alguma das suas submissões.
8
TAAAAxxx
1 T 4 A 3 x
Explicação do exemplo 1: o primeiro caractere da cadeia,
‘T’, não tem repetição e portanto sua codificação é o par
‘1 T’. A seguir na cadeia de caractere aparecem quatro
caracteres ‘A’ repetidos, e portanto a codificação dessa
sequência é o par ‘4 A’. Finalmente na cadeia de caractere
aparecem três caracteres ‘x’ repetidos, e portanto a
codificação dessa sequência é o par ‘3 x’. Os pares devem
ser separados por um espaço em branco, e portanto a resposta é
‘1 T 4 A 3 x’.
4
XYZX
1 X 1 Y 1 Z 1 X
21
aaaaaaaaaabbbbbbbbbbb
10 a 11 b