#include #include #include #include #define NAME_LEN 508 typedef struct { long tag; char name[NAME_LEN]; } TagName; typedef struct { TagName nm1; TagName nm2; } CacheHog; int main(int argc, char **argv) { int i, j, k, numHogs, numInv1 = 0, numInv2 = 0; CacheHog *vals; numHogs = atoi(argv[1]); vals = calloc(sizeof(CacheHog), numHogs); for (i = 0; i < numHogs; i++) { vals[i].nm1.tag = numHogs - i; vals[i].nm2.tag = numHogs + i; } for (i = 0; i < numHogs; i++) for (j = i+1; j < numHogs; j++) { if (vals[i].nm1.tag > vals[j].nm1.tag) numInv1++; if (vals[i].nm2.tag > vals[j].nm2.tag) numInv2++; } printf("Inversion counts: %d %d \n", numInv1, numInv2); free(vals); return 0; }