Lâu rồi ko lên hoc24, vừa lên thấy bài hay ngay mới hay chứ
Thuật toán:
t=1 thì ko nói rồi do dễ quá
Khi t=2 thì ta có 2 biến dem0 và dem1 để giữ số các số 0 và 1
Nếu dem1<vt cần tìm thì số đó ko thể là số 1=>writeln(0)
Ngược lại thì số đó là 1=>writeln(1)
Code:
Program kth;
uses crt;
var n,i,t,x,q,dem1,dem0:integer;
a:array[1..100000] of Byte;
f1,f2:text;
Begin
clrscr;
assign(f1,'kth.inp'); reset(f1);
assign(f2,'kth.out'); rewrite(f2);
read(f1,n,q);
for i:=1 to n do
begin
read(f1,a[i]);
dem1:=dem1+ord(a[i]=1);
dem0:=dem0+ord(a[i]=0);
end;
for i:=1 to q do
begin
read(f1,t,x);
case t of
1:begin
if a[x]=1 then
begin
dec(dem1); inc(dem0);
end
else
begin
inc(dem1); dec(dem0);
end;
a[x]:=1-a[x];
end;
2:writeln(f2,1*ord(dem1>=x)+0*ord(dem1<x));
end;
end;
Close(f1);
close(f2);
End.
*Note:ord(bool) giống như khi làm trong C++,tức:
-Khi bool=true thì ra 1
-Khi bool=false thì ra 0