Skip to content

Instantly share code, notes, and snippets.

@JonathanVeg
Created May 26, 2013 03:01
Show Gist options
  • Save JonathanVeg/5651564 to your computer and use it in GitHub Desktop.
Save JonathanVeg/5651564 to your computer and use it in GitHub Desktop.
#include <stdio.h>
#include <stdarg.h>
void print(int i){
printf("%d ", i);
}
void println(int i){
printf("%d\n", i);
}
void doubleSort(int size, int*vectorBase, int*otherVector){
int aux, aux2;
int i;
int swap;
do{
size--;
swap = 0;
for(i = 0; i < size; i++)
if(vectorBase[i] < vectorBase[i+1]){
aux=vectorBase[i+1];
vectorBase[i+1]=vectorBase[i];
vectorBase[i]=aux;
aux2=otherVector[i+1];
otherVector[i+1]=otherVector[i];
otherVector[i]=aux2;
swap=1;
}
}while(swap);
}
void sort(int size, int *vector){
int aux;
int i;
int swap;
do{
size--;
swap = 0;
for(i = 0; i < size; i++)
if(vector[i] < vector[i+1]){
aux=vector[i+1];
vector[i+1]=vector[i];
vector[i]=aux;
swap=1;
}
}while(swap);
}
int main()
{
int numberOfRaces, numberOfClassified;
int year;
int i, j, k; //variaveis de controle para os for's
int *data; // 'data' de 'dados'
int *competitors;
int *points;
int *victories;
int *line;
scanf("%d %d", &numberOfRaces, &numberOfClassified);
do {
scanf("%d", &year);
data = (int*)malloc(numberOfRaces * numberOfClassified * sizeof(int)); // vetorzao que sera usado como matriz
points = (int*) malloc(numberOfClassified * sizeof(int));
competitors = (int*) malloc(numberOfClassified * sizeof(int));
victories = (int*) malloc(numberOfClassified * sizeof(int));
line = (int*) malloc(numberOfClassified * sizeof(int));
for (i = 0; i < numberOfClassified; i++){
points[i] = 0;
victories[i] = 0;
}
printf("Ano %d\n", year);
for (i = 0; i < numberOfRaces * numberOfClassified; i ++){
scanf("%d", &data[i]);
}
for (i = 0; i < numberOfClassified; i ++)
competitors[i] = data[i];
sort(numberOfClassified, competitors);
for (i = 0; i < numberOfRaces; i ++){
for (j = 0; j < numberOfClassified; j++){
for (k = 0; k < numberOfClassified; k++){
if (competitors[k] == data[i*numberOfClassified + j]){
points[k] += numberOfClassified - j - 1;
}
}
}
}
doubleSort(numberOfClassified, points, competitors);
printf("Campeao por pontos: %d ", competitors[0]);
j = 1;
printf("pontos\n");
// caso tenha mais de um com a mesma quantidade de pontos
while (points[0] == points[j] && j < numberOfClassified){
print(competitors[j]);
j++;
}
println("\n");
for (i = 0; i < numberOfRaces; i ++){
for (k = 0; k < numberOfClassified; k++){
if (competitors[k] == data[i*numberOfClassified]){
victories[k]++;
}
}
}
doubleSort(numberOfClassified, victories, competitors);
printf("Campeao por vitorias: %d\n", competitors[0]);
j = 1;
// caso tenha mais de um com a mesma quantidade de victories
while (victories[0] == victories[j] && j < numberOfClassified){
printf("Campeao por vitorias: %d\n", competitors[j]);
j++;
}
printf("\n");
scanf("%d %d", &numberOfRaces, &numberOfClassified);
}while(numberOfRaces != 0);
getchar();
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment