Problem hidden
|This problem was hidden by Editorial Board member probably because it has incorrect language|version or invalid test data, or description of the problem is not clear.|

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
© Spoj.com. All Rights Reserved. Spoj uses Sphere Engine™ © by Sphere Research Labs.