diff --git a/du5/program.c b/du5/program.c index cf34882..4ab963f 100644 --- a/du5/program.c +++ b/du5/program.c @@ -1,5 +1,90 @@ #include +#include int main(){ -printf("3\n"); + char name[50][50]; + int score[50]; + int pos = 0; + while(1){ + scanf("%[^0-9] %d", name[pos], &score[pos]); + scanf("%*c"); + pos++; + int tmpCh = getc(stdin); + if(tmpCh == '\n') break; + ungetc(tmpCh, stdin); + } + + char newName[50][50]; + int newScore[50]; + int newPos = 0; + + for(int i = 0; i < pos; i++){ + int check = 0; + for(int q = 0; q < newPos; q++){ + if(q != i){ + if(strcmp(name[i], newName[q]) == 0){ + check = 1; + break; + } + } + } + if(check == 0){ + strcpy(newName[newPos], name[i]); + newScore[newPos] = 0; + newPos++; + } + } + + for(int i = 0; i < newPos; i++){ + for(int q = 0; q < pos; q++){ + if(strcmp(newName[i], name[q]) == 0) newScore[i] += score[q]; + } + } + + for(int i = 0; i < newPos - 1; i++){ + if(newScore[i] < newScore[i + 1]){ + int tmpScore = newScore[i]; + newScore[i] = newScore[i + 1]; + newScore[i + 1] = tmpScore; + + char tmpName[50]; + strcpy(tmpName, newName[i]); + strcpy(newName[i], newName[i + 1]); + strcpy(newName[i + 1], tmpName); + + i = 0; + } + else if(newScore[i] == newScore[i + 1]){ + int test = 0; + for(int q = 0; q < newPos; q++){ + if(newName[i][pos] < newName[i + 1][pos]){ + int tmpScore = newScore[i]; + newScore[i] = newScore[i + 1]; + newScore[i + 1] = tmpScore; + + char tmpName[50]; + strcpy(tmpName, newName[i]); + strcpy(newName[i], newName[i + 1]); + strcpy(newName[i + 1], tmpName); + break; + } + else{ + int tmpScore = newScore[i + 1]; + newScore[i + 1] = newScore[i]; + newScore[i] = tmpScore; + + char tmpName[50]; + strcpy(tmpName, newName[i + 1]); + strcpy(newName[i + 1], newName[i]); + strcpy(newName[i], tmpName); + break; + } + } + } + } + + printf("\n"); + for(int i = 0; i < newPos; i++){ + printf("%d %s\n", newScore[i], newName[i]); + } } \ No newline at end of file