URI Online Judge | 1258
Camisetas
Por Neilor Tonin, URI
Brasil
Timelimit: 1
Brasil
O professor Rolien organizou junto às suas turmas de Ciência da Computação a confecção de uma camiseta polo que fosse ao mesmo tempo bonita e barata. Após algumas conversas, ficou decidido com os alunos que seriam feitas somente camisetas da cor preta, o que facilitaria a confecção. Os alunos poderiam escolher entre o logo do curso e os detalhes em branco ou vermelho. Assim sendo, Rolien precisa de sua ajuda para organizar as listas de quem quer a camiseta em cada uma das turmas, relacionando estas camisetas pela cor do logo do curso, tamanho (P, M ou G) e por último pelo nome.Entrada
A entrada contém vários casos de teste. Cada caso de teste inicia com um valor N, (1 ≤ N ≤ 60) inteiro e positivo, que indica a quantidade de camisetas a serem feitas para aquela turma. As próximas N*2 linhas contém informações de cada uma das camisetas (serão duas linhas de informação para cada camiseta). A primeira linha irá conter o nome do estudante e a segunda linha irá conter a cor do logo da camiseta ("branco" ou "vermelho") seguido por um espaço e pelo tamanho da camiseta "P" "M" ou "G". A entrada termina quando o valor de N for igual a zero (0) e esta valor não deverá ser processado.
Saída
Para cada caso de entrada deverão ser impressas as informações ordenadas pela cor dos detalhes em ordem ascendente, seguido pelos tamanhos em ordem descendente e por último por ordem ascendente de nome, conforme o exemplo abaixo.
Obs.: Deverá ser impressa uma linha em branco entre dois casos de teste.
Obs.: Deverá ser impressa uma linha em branco entre dois casos de teste.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct{
char nome[51];
char cor[16];
char tam;
}camisa;
int comp(const void *p1,const void *p2){
camisa *i=(camisa *)p1,*j=(camisa *)p2;
int comp=strcmp(i->cor,j->cor);
if(comp==0){
if(i->tam>j->tam){
return -1;
}else if(i->tam<j->tam){
return 1;
}else{
return strcmp(i->nome,j->nome);
}
}else{
return comp;
}
}
int main(int argc,char *argv[]){
int n=0,x,c=0;
while(1){
scanf("%d",&n);
if(n==0) break;
if(c!=0) printf("\n");
camisa cam[n];
for(x=0;x<n;x++){
while(getchar()!='\n');
scanf("%[^\r\n]", &cam[x].nome);
scanf("%s %c",&cam[x].cor,&cam[x].tam);
}
qsort(cam,n,sizeof(cam[0]),comp);
for(x=0;x<n;x++){
printf("%s %c %s\n",cam[x].cor,cam[x].tam,cam[x].nome);
}
c++;
}
return 0;
}
0 Comentários