题目大意:
题解:
这题就是一个暴力的枚举然后用哈希去存题目,观察数据可知m≤10^2,
所以直接O(m^2)枚举每个命令然后把题目存入哈希表中查询即可。
不过要注意对于一个已经A掉的题目他可能WA了,不过还是要算它是AC的,并不用在查询时输出!
代码:
const
modn=107;
var
b,hash:array [0..modn+1] of longint;
c,a:array [0..101] of longint;
x,y,i,j,k,l,n,m:longint;
function rp(xy:longint):longint;
var
i:longint;
begin
i:=xy mod modn;
while (hash[i]<>xy) and (hash[i]<>0) do
begin
inc(i);
if i>modn then i:=0;
end;
hash[i]:=xy;
exit(i);
end;
begin
assign(input,'problem.in'); reset(input);
assign(output,'problem.out');rewrite(output);
readln(n,m);
for i:=1 to m do
begin
read(x);
if x=1 then begin
read(y);
inc(c[0]);
c[c[0]]:=y;
for j:=1 to k do
if a[j]=y then a[j]:=-1;
end
else if x=2 then
begin
read(y);
l:=0;
for j:=1 to c[0] do
if c[j]=y then l:=1;
if l=0 then
begin
inc(k);
a[k]:=y;
end;
end
else if x=3 then
begin
l:=0;
for j:=k downto 1 do
if a[j]<>-1 then
begin
y:=rp(a[j]);
if b[y]<>i then
begin
inc(l);
write(a[j],' ');
end;
b[y]:=i;
if l=20 then break;
end;
writeln;
end;
end;
close(input);close(output);
end.