P1540
如下所示,a.push(x)这一串代码必须放在最后,也就是说必须先清空队首才可以把新的数字放入队列,为什么?
如果先放入队列,再清空队首就只得90分
蒟蒻膜拜各位大佬orz
#include <bits/stdc++.h>
using namespace std;
bool m[1005]={};
queue <int> a;
int main (){
int i, n,x,ans=1;
cin >> i>> n>> x;
m[x]=1; a.push(x); n--; x=0;
while (n!=0){
cin >> x;
n--;
if (m[x]==0) {
m[x]=1;
ans++;
if (a.size()>=i) {m[a.front()]=0;a.pop();}
a.push(x);
}
}
cout << ans;
return 0;
}