-
-
Save anitainfo/c79994c2bb8ef9c3374aee9ebf2c4df0 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include<bits/stdc++.h> //biblioteca utilizada | |
using namespace std; | |
int contador[13]; //declaro o vetor contador | |
struct comp{ //declaro uma struct de um char e um int | |
char nome[16]; | |
int pont; | |
}; | |
bool cmp(comp a, comp b) //bool para comparar | |
{ | |
if(a.pont!=b.pont)return a.pont>b.pont; //se os valores de pontuação forem diferentes, retorna 'a.pont>b.pont' | |
else //se não | |
{ | |
int val=strcmp(a.nome,b.nome); //'val' recebe o resultado da comparação alfabética entre nome 'a' e nome 'b' | |
if(val<0)return a.nome<b.nome; //se 'val' menor que 0, retorna 'a.nome<b.nome' | |
else return a.nome>b.nome; //se não, retorna 'a.nome>b.nome' | |
} | |
} | |
int main() { | |
int n, teste=1; //declaro as variáveis | |
while(scanf("%d", &n)==1 && n > 0) //enquanto existem casos de teste ('n'>0) | |
{ | |
comp v[n+1]; //declaro um vetor na forma de struct | |
for(int i=0; i<n; i++) //loop enquanto 'i'<'n' | |
{ | |
scanf("%s[^\n]", v[i].nome); //leitura do nome | |
v[i].pont=0; //zero a pontuacao do vetor na posição 'i' | |
int maxi=0; //zero a variável 'maxi' | |
int mini=1010; //maximizo o valor de 'mini' | |
for(int j=0; j<12; j++) //loop para ler todas as pontuações | |
{ | |
scanf("%d", &contador[j]); //leitura de cada pontuação | |
v[i].pont+=contador[j]; //soma-se o valor lido à pontuação da pessoa | |
maxi=max(maxi,contador[j]); //maxi recebe o máximo entre seu valor antigo e o valor lido | |
mini=min(mini,contador[j]); //mini recebe o mínimo entre seu valor antigo e o valor lido | |
} | |
v[i].pont-=maxi; //subtrai-se o valor máximo lido da pontuação total | |
v[i].pont-=mini; //subtrai-se o valor mínimo lido da pontuação total | |
} | |
sort(v,v+n,cmp); //ordena-se o vetor 'v[]', de acordo com a função 'cmp' | |
sort(v,v+n,cmp); //ordena-se o vetor 'v[]' novamente, de acordo com a função 'cmp' | |
printf("Teste %d\n", teste++); //imprimo o teste determinado | |
int posi=1; //variável 'posi' é declarada, inicialmente valendo 1 | |
for(int i=0; i<n; i++) //enquanto 'i'<'n' | |
{ | |
if(i>0) //se 'i'>0 | |
{ | |
if(v[i].pont!=v[i-1].pont)posi=i+1; //se a pontuacao anterior é deiferente da atual, soma-se 1 à 'posi' | |
} | |
printf("%d %d %s\n", posi, v[i].pont, v[i].nome); //imprime a posição ('posi), a pontução total e o nome | |
} | |
printf("\n"); //imprime uma linha em branco | |
} | |
return 0; //retorna a 0 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment