社区讨论
求改进,我只通过了6组数据,后面的超时了
P1533可怜的狗狗参与者 3已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mi4hkqq0
- 此快照首次捕获于
- 2025/11/18 19:24 4 个月前
- 此快照最后确认于
- 2025/11/18 19:24 4 个月前
CPP
var
n,m,i,j,k,ii,jj:longint;
a:array[1..300001,0..1] of longint;
procedure qsort(i,j:longint);//快排
var
mid,l,r:longint;
begin
l:=i;
r:=j;
mid:=a[(l+r) div 2,0];
while l<=r do begin
while mid>a[l,0] do inc(l);
while mid<a[r,0] do dec(r);
if l<=r then begin
k:=a[l,0];
a[l,0]:=a[r,0];
a[r,0]:=k;
k:=a[l,1];
a[l,1]:=a[r,1];
a[r,1]:=k;
inc(l);
dec(r)
end;
end;
if (i<r) then qsort(i,r);
if (l<j) then qsort(l,j);
end;
begin
readln(n,m);
for ii:=1 to n do begin
read(a[ii,0]);
a[ii,1]:=ii;
end;
qsort(1,n);
for ii:=1 to m do
begin
readln(i,j,k);
for jj:=1 to n do
if (a[jj,1]<=j) and (a[jj,1]>=i) then //找第k个
begin
dec(k);
if k=0 then break;
end;
writeln(a[jj,0]);
end;
end.
时间复杂度O(n^2+n log n)
回复
共 2 条回复,欢迎继续交流。
正在加载回复...