#include<stdio.h> #include<malloc.h> #include<string.h> int main() { int t,n,m; int* a=NULL,* b= NULL,*c= NULL; scanf("%d", &t); while (t-- > 0) { scanf("%d%d", &n,&m); void *new_ptr = realloc(a, n * sizeof(int)); if (!new_ptr) { } a = (int*)new_ptr; new_ptr = realloc(b, n * sizeof(int)); if (!new_ptr) { } b = (int*)new_ptr; new_ptr = realloc(c, m * sizeof(int)); if (!new_ptr) { } c = (int*)new_ptr; memset(c, 0, m * sizeof(int)); for (int i = 0; i < n; i++) { scanf("%d%d", a + i, b + i); int j; for (j = 0; j < m&&c[j]!=0; j++) { if (a[i] > a[c[j] - 1]||(a[i] == a[c[j] - 1] && b[i]>b[c[j]-1])) { memmove(c + j + 1,c + j, (m - j - 1)*sizeof(int)); c[j] = i + 1; break; } } if (c[j] == 0) { c[j] = i + 1; } } for (int i = 0; i < m; i++) { if (i == 0){ printf("%d", c[i]); } else { printf(" %d", c[i]); } } if (t > 0) { printf("\n"); } } free(a); free(b); free(c); return 0; } |
Double click to view unformatted code.