2024年9月28日 星期六

[506] Relative Ranks

啊..........

不知道要說什麼,就什麼都不要說好了T^T

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int comp(const void *a, const void *b)
{
    int *A = *(int**)a;
    int *B = *(int**)b;
    return (B[0]- A[0]);
}

char** findRelativeRanks(int* score, int scoreSize, int* returnSize) {
    int **idx_arr = calloc (scoreSize, sizeof(int*));
    for (int i=0; i<scoreSize; i++)
    {
        idx_arr[i] = calloc (2, sizeof (int));
        idx_arr[i][0]= score[i];
        idx_arr[i][1]= i;
    }
    qsort(idx_arr,scoreSize, sizeof(int**), comp );
    char **ret = calloc (scoreSize, sizeof (char*));
    for (int i=0; i<scoreSize; i++)
    {
        int _idx = idx_arr[i][1];
        switch(i){
            case (0):
                ret[_idx] = calloc (11,sizeof(char));
                sprintf(ret[_idx],"%s", "Gold Medal");
                break;
            case (1):
                ret[_idx] = calloc (13,sizeof(char));
                sprintf(ret[_idx],"%s", "Silver Medal");
                break;
            case (2):
                ret[_idx] = calloc (13,sizeof(char));
                sprintf(ret[_idx],"%s", "Bronze Medal");
                break;
            default : 
                ret[_idx] = calloc (5,sizeof(char));
                sprintf(ret[_idx],"%d", (i+1));
        }
    }

    *returnSize = scoreSize;
    return ret;
}

沒有留言:

張貼留言