熟悉一下STL中deque双端队列的使用即可,当时为了看一下程序中途运行结果加了一行无用代码给T了,还以为这道题很难。
所以没有用到的变量记得都删掉,没有用的赋值语句也删掉
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main() {
ios::sync_with_stdio(false);
int n, k;
deque<ll>dq;
set<ll>st;
cin >> n >> k;
for (int i = 0; i < n; i++) {
int num;
cin >> num;
int nn=st.size();
st.insert(num);
if (st.size() == nn)
continue;
if (dq.size() == k) {
st.erase(dq.back());
dq.pop_back();
}
dq.push_front(num);
st.insert(num);
}
cout << dq.size() << endl;
while (!dq.empty()) {
cout << dq.front() << " ";
dq.pop_front();
}
//system("pause");
return 0;
}