以下是我的代码,通过 unordered_map 类实现查询和插入。
#include <cctype>
#include <cstdio>
#include <unordered_map>
using namespace std;
int read(){
int tmp = 0;
char ch = getchar();
while (!isdigit(ch)) ch = getchar();
while (isdigit(ch)){
tmp = (tmp << 3) + (tmp << 1) + (ch ^ '0');
ch = getchar();
}
return tmp;
}
void write(int x){
if (x < 0){
putchar('-');
x = -x;
}
if (x > 9) write(x / 10);
putchar(x % 10 + '0');
}
int T,n,tmp;
unordered_map<int,bool> mp;
int main(){
T = read();
for (int i = 1;i <= T;i++){
mp.clear();
n = read();
for (int j = 1;j <= n;j++){
tmp = read();
if (!mp[tmp]){
mp[tmp] = true;
write(tmp);
putchar(' ');
}
}
putchar('\n');
}
return 0;
}
代码得 60 分,剩余 4 个测试点均提示:
Wrong Answer.wrong answer On line 1 column 33, read 4, expected -.
原本以为是快速输出的问题,但是试了 printf(/* ... */) 函数,发现结果仍旧一样。