分析:该题是经典的队列题目,直接用队列实现就可以。如果数据范围大一些的话还可hash判重!
这可以说是一道送分的题目,但是还有粗心的学生会在这里失分,主要原因是数组的范围定义的不合适,因为空间足够用,在考试中数据范围要稍大一些。当然还有个别同学是因为模拟失误了,这种送分题目我只能说,一定要多对拍几组特殊数据,保证得满分才好!
var m,n,sum:longint; q:array[0..1000] of longint; head,tail:longint; procedure init; var bo:boolean; i,j,x:longint; begin readln(m,n); head:=0;tail:=0; sum:=0; for i:=1 to n do begin bo:=false; read(x); for j:=head+1 to tail do if q[j]=x then begin bo:=true; break; end; if not bo then begin if tail-head>=M then inc(head); inc(tail); q[tail]:=x;inc(sum); end end; writeln(sum); end; begin assign(input,'translate.in');reset(input); assign(output,'translate.out'); rewrite(output); init; close(input); close(output); end.