Submeter | Todas submissőes | Melhores | Voltar |
PLACAR - Quem vai ser reprovado |
Prof. Wallywow da Universidade da Columbia Britânica está muito preocupado com a queda do nível de atenção de seus estudantes. Ele já tentou várias técnicas mundialmente conhecidas para incentivar os alunos a prestar atenção nas suas aulas e fazer as tarefas que ele passa para a turma: deu nota para os alunos mais participativos, ofereceu chocolates aos alunos, levou seu karaokê e cantava nas aulas etc. Como tais medidas não levaram a uma melhora no comparecimento às aulas (a idéia do karaokê, inclusive, mostrou-se bastante infeliz... na segunda aula com karaokê a turma reduziu-se a um aluno -- que tinha problemas auditivos) ele teve uma brilhante idéia: faria uma competição entre os alunos.
Prof. Wallywow passou um conjunto de problemas aos alunos, e deu um mês para que eles os resolvessem. No final do mês os alunos mandaram o número de problemas resolvidos corretamente. A promessa do brilhante didata era reprovar sumariamente o último colocado da competição. Os alunos seriam ordenados conforme o número de problemas resolvidos, com empates resolvidos de acordo com a ordem alfabética dos nomes (não há homônimos na turma). Isso fez com que alunos com nomes iniciados nas últimas letras do alfabeto se esforçassem muito nas tarefas, e não compartilhassem suas soluções com colegas (especialmente aqueles cujos nomes começassem com letras anteriores). Sua tarefa neste problema é escrever um programa que lê os resultados dos alunos do Prof. Wallywow e imprime o nome do infeliz reprovado.
Qualquer semelhança entre o Prof. Wallywow e o Prof. Carlinhos é mera coincidência.
Entrada
A entrada é composta de diversas instâncias. A primeira linha de cada instância consiste em um inteiro n
(1 <= n <= 100
) indicando o número de alunos na competição. Cada uma das n
linhas seguintes contém o nome do aluno e o número de problemas resolvidos por ele. O nome consiste em uma seqüência de letras [a-z]
com no máximo 20
letras e cada time resolve entre 0
a 10
problemas.
A entrada termina com final de arquivo.
Saída
Para cada instância, você deverá imprimir um identificador Instancia k
, onde k
é o número da instância atual. Na linha seguinte imprima o nome do infeliz reprovado.
Após cada instância imprima uma linha em branco.
Exemplo
Entrada:
4
cardonha 9
infelizreprovado 3
marcel 9
infelizaprovado 3
Saída:
Instancia 1
infelizreprovado
Adicionado por: | Wanderley Guimarăes |
Data: | 2007-08-16 |
Tempo limite: | 0.203s |
Tamanho do fonte: | 50000B |
Memory limit: | 1536MB |
Cluster: | Cube (Intel G860) |
Linguagem permitida: | Todas exceto: ASM64 CLOJURE ERL FSHARP JS-RHINO NODEJS OBJC PERL6 PY_NBC SCALA SQLITE TCL VB.NET |
Origem: | Seletiva para Maratona de Programação do IME - 2007 |
hide comments
|
||||||||||||
2015-07-26 02:48:22 Maikel Andril Marcelino [UFRN]
Alguém me ajuda? http://pastebin.com/hyEkXtDC |
||||||||||||
2015-05-11 01:14:27 Igor Cavalcanti
Se alguém ver algum erro, pode informar. Taí o código... --' #include <stdio.h> #include <stdlib.h> #include <string.h> int comparaStrings(char str1[], char str2[]); int main(){ char **nome, reprovado[21], nInstancias; int *notas, i, j = 0, notaReprovado, n; while(scanf("%c", &nInstancias) != EOF){ n = nInstancias - '0'; nome = (char **)malloc(n * sizeof(char *)); notas = (int *)malloc(n * sizeof(int *)); for(i = 0; i < n; i++){ nome[i] = (char *)malloc(21 * sizeof(char)); } for(i = 0; i < n; i++){ scanf("%s %d", nome[i], ¬as[i]); if(i == 0){ notaReprovado = notas[0]; strcpy(reprovado, nome[0]); } if(notas[i] < notaReprovado){ notaReprovado = notas[i]; strcpy(reprovado, nome[i]); }else{ if(notas[i] == notaReprovado){ if(comparaStrings(nome[i], reprovado)){ notaReprovado = notas[i]; strcpy(reprovado, nome[i]); } } } } scanf("%c", &nInstancias); j++; if(j == 1) printf("Instancia %d\n%s\n", j, reprovado); else printf("\nInstancia %d\n%s\n", j, reprovado); free(notas); for(i = 0; i < n; i++){ free(nome[i]); } free(nome); } return 0; } int comparaStrings(char str1[], char str2[]){ int i, n, tam_str1, tam_str2; tam_str1 = strlen(str1); tam_str2 = strlen(str2); n = (tam_str1 <= tam_str2) ? tam_str1 : tam_str2; for(i = 0; i < n; i++){ if(str1[i] < str2[i]){ return 0; }else{ if(str1[i] > str2[i]){ return 1; } } } if(n == tam_str1){ return 0; } return 1; } |
||||||||||||
2015-05-11 01:13:42 Igor Cavalcanti
É, mano. Tentei de tudo quanto é jeito e nada. Problema muito mal formulado. Enviei várias vezes de diversas formas. Explicado a quantidade de submissões com poucas aceitações. |
||||||||||||
2015-04-08 13:55:19 Diego Andrade
Vitor Oliveira vc năo está incrementando o valor de i |
||||||||||||
2014-07-23 18:46:02 Junior Alves [UFPB]
Meu programa está correto, mas năo sei como fazer para verificar se o arquivo está no fim, em python, alguém dá uma luz aí? |
||||||||||||
2014-03-27 03:03:24 Vitor Oliveira [UFU]
O meu código está com TLE, estou usando os seguintes loops: while(scanf("%d",&n)!=EOF){ while(i<n){Código}} Alguém pode me ajuda? |
||||||||||||
2014-02-18 16:00:34 Roberto Alegro
Estou resolvendo em java e quando rodo no meu computador ele funciona perfeitamente dando o resultado esperado com todos os conjuntos-teste que eu usei, entretanto quanto mando o código para o sistema de julgamento, ele diz que o resultado está incorreto |
||||||||||||
2014-01-18 22:27:36 Jeremias Moreira Gomes [UnB]
O meu só năo estava dando certo porque năo estava usando a biblioteca string.h. Depois que passei a usar, foi aceito. |
||||||||||||
2013-12-11 20:54:49 Pablo Luiz
O meu estava sempre dando resposta errada, pois tinha alocado o nome como char nome[20], porém se o nome tem 20 caracteres o '\0' ocupará um espaço, logo o certo seria char nome[21], foi só fazer essa mudança que deu certo 0/ |
||||||||||||
2013-12-05 22:42:32 Alcides (UFRPE)
Está dando erro de execuçăo NZEC, qual é a condiçăo de parada do arquivo? Last edit: 2013-12-05 22:43:45 |