#include #include // Include stdlib.h for qsort function typedef struct { int value; int originalIndex; } Element; // Compare function for sorting elements in descending order int compare(const void *a, const void *b) { Element *elem1 = (Element *)a; Element *elem2 = (Element *)b; return elem2->value - elem1->value; // Sort in descending order } int main() { int n; // Number of elements in the array scanf("%d", &n); Element arr[n]; // Array of elements with original indices // Read elements and store them with their original indices int i; for (i = 0; i < n; ++i) { scanf("%d", &arr[i].value); arr[i].originalIndex = i; } // Sort elements in descending order based on value qsort(arr, n, sizeof(Element), compare); // Use qsort from stdlib.h // Array to store the ranks int ranks[n]; // Assign ranks ranks[arr[0].originalIndex] = 1; // Start with rank 1 for the largest element for (i = 1; i < n; ++i) { if (arr[i].value == arr[i - 1].value) { ranks[arr[i].originalIndex] = ranks[arr[i - 1].originalIndex]; } else { ranks[arr[i].originalIndex] = i + 1; // Assign next rank } } // Output the ranks in the original order for (i = 0; i < n; ++i) { printf("%d", ranks[i]); if (i < n - 1) { printf(" "); } } printf("\n"); return 0; }