SPOJ Problem Set (sulamericana)
3599. Recuperação de relatórios
Problema: RELATORI
|
No fim da semana, John pediu para Mary enviar para ele um relatório
de vendas urgente. Mary estava apressada porque ela estava saindo de
férias. Ela então copiou e colou a folha de vendas em um email, enviando-o
para John e foi embora. Ela não queria ser pertubada com assuntos de
trabalho, por isso ela foi embora sem contar para ninguém onde ele estaria.
Ela anunciou simplesmente que não estaria disponível nas próximas duas semanas,
desligou seu celular, e saiu.
Quando John recebeu a messagem ele percebeu que o relatório não tinha
nenhum espaço!!! Ele sabia que o relatório deveria ter uma linha
de cabeçalho com os códigos dos produtos da forma P1, P2, ... , PN e
a palavras Totals no fim. Então haveriam muitas linhas reportando as vendas
de produtos para os diferentes vendedores do escritórios de Mary.
Cada vendedor era identificado com um nome composto por uma palavra
(somente caracteres alfabéticos). A linha correspondente a um vendedor deveria começar com o nome dele/dela,
seguido pelo número de produtos vendidos, de acordo com as colunas do relatório.
A última linha do relatório deveria começar com duas letras TP seguido pelos totais de cada coluna no relatório
(claro, nenhum nome de vendedor começava com as letras TP). John sabia que não existia nenhum
número negativo no relatório, uma quantidade zero era relatada com um simples 0,
e não haviam zeros à esquerda quando era relatado uma quantidade positiva.
Neste ponto, John decidiu reconstruir o relatório de Mary. Ele
sabia que deveria haver mais de um resultado possível, mas ele queria
poder fazer algo com a primeira solução consistente que ele
pudesse encontrar (talvez ele pudesse corrigir algum erro quando
Mary voltasse).
Você poderia ajudar John com a recuperação do relatório de vendas de
Mary?
Entrada
A entrada consiste de muitos casos de teste. A primeira linha
de um caso de teste contém um inteiro C especificando o numero
de casos de teste. A primeira linha de um relatório é uma linha
de cabeçalho, contendo o código dos produtos P1, P2, ... PN e
a palavra Totals, como descrito anteriormente. A numeração dos
produtos nesta linha de cabeçalho é consecutiva, de 1 até N, com
1<=N<=15. Então existirá um número de linhas, cada uma representando
uma linha do relatório, como descrito anteriormente. A última linha do
relatório inicia com as letras TP e tem o formato descrito anteriormente.
Considere que cada vendedor vendeu menos do que 1000 unidades de cada produto.
Não existem mais do que 4 vendedores em cada caso. Cada nome de vendedor
não excederá 10 caracteres (Somente caracteres minúsculos e maiúsculos).
Saída
Para cada caso de teste na entrada seu programa deve produzir
um possivel relatório de Mary. Cada linha da resposta de estar
alinhada a esquerda, com seus itens separados por um espaço em branco,
e com nenhum espaço no fim.
Exemplo de entrada
2
P1P2P3Totals
Amanda121100131
Charles5141772
Monique14121238
TP1862629241
P1P2Totals
Ingrid9519851936
Candid49212504
Peter10313
Camila000
TP145310002453
Exemplo de saída
P1 P2 P3 Totals
Amanda 121 10 0 131
Charles 51 4 17 72
Monique 14 12 12 38
TP 186 26 29 241
P1 P2 Totals
Ingrid 951 985 1936
Candid 492 12 504
Peter 10 3 13
Camila 0 0 0
TP 1453 1000 2453
| Adicionado por: | Wanderley Guimarães |
| Data: | 2008-12-27 |
| Tempo limite: | 12s
|
| Tamanho do fonte: | 50000B |
| Linguagem permitida: | Todas exceto: AWK CLOJ ERL F# GO JS PERL 6 SCALA SED TCL |
| Origem: | Final Sul-Americana da Maratona de Programação da ACM 2006 |