Алгоритм сжатия данных

Здравствуйте. Нужна помощь. Есть задача: на вход программе подается 51 строка, по 100 символов в каждой, состоящие исключительно из нулей и единиц (0 или 1). Нужен алгоритм, который мог бы эти получаемые на вход данные сжимать и выводить уже сжатую последовательность всё также из нулей и единиц, в одну строку. И так, чтобы полученные сжатые данные можно было однозначно декодировать, получив те же исходные данные, в 51 строку по 100 символов.

То есть нам даются нолики и единички и надо вывести нолики и единички, только чтобы их было уже меньше, при этом алгоритм должен работать без потерь.

Желательно C++