핫픽스
시간 제한8초메모리 제한1024 MB
길이가 최대 10^6인 영문자 문자열이 주어질 때, 서로 다른 부분 문자열마다 등장 횟수를 출력한 결과에서 각 문자가 나타나는 총 횟수를 ASCII 순으로 구합니다.
문제
이전 대회에서 참가자들은 간단한 문제를 풀어야 했다. 문자열이 주어지면 그 문자열의 고유한 부분 문자열을 모두 출력하고, 각 부분 문자열이 원래 문자열에서 등장한 횟수를 함께 출력해야 했다. 예를 들어 AB는 A 1 B 1 AB 1을 출력하고, AAA는 A 3 AA 2 AAA 1을 출력한다.
이 문제를 이번 대회에서 재사용하려고 옮기는 과정에서 여러 실수가 있었다. 입력 제약이 크게 바뀌어서 문제가 완전히 불가능해졌다! 다행히 출력 검증기도 함께 망가져서 이 문제가 일부 상쇄되었다. 이제 검증기는 출력이 정확한지 확인하지 않고, 출력에 있는 각 문자의 개수가 맞는지만 확인한다. 출력에 런 길이 인코딩을 적용하는 간단한 핫픽스를 더하자 문제를 다시 풀 수 있게 되었고, 대회는 계획대로 계속 진행될 수 있었다. 맞지?
입력
입력은 길이가 이상 이하인 문자열 한 줄이다. 문자열은 ASCII 영문 대문자와 소문자로만 이루어져 있다. 문자열 뒤에는 줄바꿈 문자 하나가 이어진다.
출력
앞서 설명한 문제의 출력에서 공백이 아닌 문자 중 출현 횟수가 0이 아닌 문자마다, 그 문자와 출현 횟수를 공백으로 구분해 한 줄에 출력한다. 줄은 ASCII 값의 오름차순으로 출력한다.