全WA求调,做法与第二篇题解一致。
查看原帖
全WA求调,做法与第二篇题解一致。
174065
PeterWinchester楼主2024/12/6 21:28
#define MAXN 50001
#define inl inline

#include <iostream>
#include <cstdio>
#include <cctype>
#include <algorithm>
#include <vector>

using namespace std;

struct Data {
    int val, pos;
};

int t, n, num2;
Data dat1[MAXN], dat2[MAXN];

inl int readInt();
bool comp1(Data d1, Data d2);
bool comp2(Data d1, Data d2);

int main() {
    t = readInt();
    while (t--) {
        n = readInt();
        for (int i = 1; i <= n; i++) {
            dat1[i].val = readInt();
            dat1[i].pos = i;
        }
        sort(dat1 + 1, dat1 + n + 1, comp1);
        num2 = 1;
        dat2[1] = dat1[1];
        for (int i = 2; i <= n; i++) {
            if (dat1[i].val != dat1[i - 1].val) dat2[++num2] = dat1[i];
        }
        sort(dat2 + 1, dat2 + num2 + 1, comp2);
        for (int i = 1; i <= num2; i++) printf("%d ", dat2[i].val);
        printf("\n");
    }
    return 0;
}

inl int readInt() {
    char c = getchar();
    int val = 0, sgn = 1;
    while (!isdigit(c)) sgn = c == '-'? -1 : 1, c = getchar();
    while (isdigit(c)) val = (val << 3) + (val << 1) + (c ^ 48), c = getchar();
    return val * sgn;
}

bool comp1(Data d1, Data d2) {
    return d1.val < d2.val;
}

bool comp2(Data d1, Data d2) {
    return d1.pos < d2.pos;
}
2024/12/6 21:28
加载中...