Ir ao conteúdo

Posts recomendados

Postado

Como faço na linguagem C a solução desse problema aqui....

 

 

Na escola onde você estuda, a hora do recreio é a mais aguardada pela grande maioria dos alunos. Não só porque as vezes as aulas são cansativas, mas sim porque a merenda servida é muito boa, preparada por um chefe italiano muito caprichoso.

Quando bate o sinal para a hora do recreio, todos os alunos saem correndo da sua sala para chegar o mais cedo possível na cantina, tanta é a vontade de comer. Um de seus professores notou, porém, que havia ali uma oportunidade.

Utilizando um sistema de recompensa, seu professor de matemática disse que a ordem da fila para se servir será dada não pela ordem de chegada, mas sim pela soma das notas obtidas em sala de aula. Assim, aqueles com maior nota poderão se servir antes daqueles que tem menor nota.

Sua tarefa é simples: dada a ordem de chegada dos alunos na cantina, e as suas respectivas notas na matéria de matemática, reordene a fila de acordo com as notas de matemática, e diga quantos alunos não precisaram trocar de lugar nessa reordenação.

 

Entrada
A primeira linha contém um inteiro N, indicando o número de casos de teste a seguir.

Cada caso de teste inicia com um inteiro M (1 ≤ M ≤ 1000), indicando o número de alunos. Em seguida haverá M inteiros distintos Pi (1 ≤ Pi ≤ 1000), onde o i-ésimo inteiro indica a nota do i-ésimo aluno.

Os inteiros acima são dados em ordem de chegada, ou seja, o primeiro inteiro diz respeito ao primeiro aluno a chegar na fila, o segundo inteiro diz respeito ao segundo aluno, e assim sucessivamente.

 

Saída
Para cada caso de teste imprima uma linha, contendo um inteiro, indicando o número de alunos que não precisaram trocar de lugar mesmo após a fila ser reordenada.

Exemplo de Entrada    Exemplo de Saída
3
3
100 80 90
4
100 120 30 50
4
100 90 30 25

1
0
4

Postado

:) Tem muito texto no enunciado para pouco problema.

 

A condição que quer contar é o número de caras que estão já no lugar certo da fila.

 

São duas coisas então:

  • determinar o lugar certo na fila, já que o lugar em que estão é bem conhecido :) 
  • contar

Exemplo 1 (seu):
 

100 80 90

Em ordem seria 100 90 80

olhando para os dois lado a lado
 

100  80  90 (original)
100  90  80 (em ordem decrescente)

 

E só um coincide: 2 vão trocar de lugar

 

Exemplo 2 (seu):
 

100 120  30  50

de modo similar

100 120  30  50
120 100  50  30

 

E nenhum está no lugar: 4 vão trocar

 

Exemplo 3 (seu):
 

100  90  30  25
100  90  30  25

 

E esses estão na ordem certa

 

 

Então apenas classifique as notas em ordem decrescente, obviamente em outro vetor, e conte  quantos são iguais na posição.

 

Claro que notas iguais vão dar confusão: no geral caras com a mesma nota deveriam ser atendidos por ordem de chegada, mas não tem como fazer isso com esses dados....

 

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...