만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

핫픽스

시간 제한8초메모리 제한1024 MB

요약
길이가 최대 10^6인 영문자 문자열이 주어질 때, 서로 다른 부분 문자열마다 등장 횟수를 출력한 결과에서 각 문자가 나타나는 총 횟수를 ASCII 순으로 구합니다.
난이도

보통10점 중 7점

유형
문자열, 문자열 매칭
정답자
아직 제출이 없습니다

문제

이전 대회에서 참가자들은 간단한 문제를 풀어야 했다. 문자열이 주어지면 그 문자열의 고유한 부분 문자열을 모두 출력하고, 각 부분 문자열이 원래 문자열에서 등장한 횟수를 함께 출력해야 했다. 예를 들어 AB는 A 1 B 1 AB 1을 출력하고, AAA는 A 3 AA 2 AAA 1을 출력한다.

이 문제를 이번 대회에서 재사용하려고 옮기는 과정에서 여러 실수가 있었다. 입력 제약이 크게 바뀌어서 문제가 완전히 불가능해졌다! 다행히 출력 검증기도 함께 망가져서 이 문제가 일부 상쇄되었다. 이제 검증기는 출력이 정확한지 확인하지 않고, 출력에 있는 각 문자의 개수가 맞는지만 확인한다. 출력에 런 길이 인코딩을 적용하는 간단한 핫픽스를 더하자 문제를 다시 풀 수 있게 되었고, 대회는 계획대로 계속 진행될 수 있었다. 맞지?

입력

입력은 길이가 11 이상 10610^6 이하인 문자열 한 줄이다. 문자열은 ASCII 영문 대문자와 소문자로만 이루어져 있다. 문자열 뒤에는 줄바꿈 문자 하나가 이어진다.

출력

앞서 설명한 문제의 출력에서 공백이 아닌 문자 중 출현 횟수가 0이 아닌 문자마다, 그 문자와 출현 횟수를 공백으로 구분해 한 줄에 출력한다. 줄은 ASCII 값의 오름차순으로 출력한다.

예제2

  1. 예제 1

    입력
    ABC
    
    예상 출력
    1 6
    A 3
    B 4
    C 3
    
  2. 예제 2

    입력
    aaaab
    
    예상 출력
    1 6
    2 1
    3 1
    4 1
    a 20
    b 5