Skip to content

Instantly share code, notes, and snippets.

@rogerioagjr
Created April 27, 2015 04:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rogerioagjr/b79883bb0c2e1d23f5f4 to your computer and use it in GitHub Desktop.
Save rogerioagjr/b79883bb0c2e1d23f5f4 to your computer and use it in GitHub Desktop.
Times
#include <cstdio> // scanf e printf
#include <string> // string
#include <vector> // vector
#include <algorithm> // sort
#define MAXN 10100 // limite de n
#define MAXT 1010 // limite de t
using namespace std;
//declarção de variáveis
int n, t, hab[MAXN], ordem[MAXN];
string nome[MAXN];
vector<string> Time[MAXT];
char auxiliar[110];
bool compara(int x, int y){ // função de comparação do sort
// o parâmetro x vem antes do parâmetro y, logo
if(hab[x]>hab[y]) return true; // se a habilidade de x for maior, x e y estão ordenados
return false; // caso contrário, não estão
}
int main(){
scanf("%d %d", &n, &t); // leio os valores de n e t
for(int i=1; i<=n; i++){ // para cada aluno da entrada
scanf(" %s %d", auxiliar, &hab[i]); // leio seu nome e sua habilidade
nome[i]=auxiliar; // salvo o nome no vetor nome, como string
}
for(int i=1; i<=n; i++) ordem[i]=i; // preencho o vetor ordem com os números de 1 a n
sort(ordem+1, ordem+n+1, compara); // ordeno o vetor com a função compara
for(int i=1; i<=n; i++){ // para cada posição do vetor ordem
int aluno=ordem[i]; // vejo o aluno que está salvo na posição
int davez=i%t; // vejo o time em que ele deve ficar
if(davez==0) davez=t; // se i for múltiplo de t, deve ficar no time t, não no time 0 (que não existe)
Time[davez].push_back(nome[aluno]); // e coloco o nome do aluno no referido time
}
for(int i=1; i<=t; i++){ // para cada time
sort(Time[i].begin(), Time[i].end()); // ordeno seus alunos em ordem alfabética
printf("Time %d\n", i); // imprimo o número do time
for(int j=0; j<Time[i].size(); j++) printf("%s\n", Time[i][j].c_str()); // e imprimo o nome de um aluno em cada liha
printf("\n"); // ao final, imprimo uma quebra de linha
}
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment