社区讨论

求改进,我只通过了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 条回复,欢迎继续交流。

正在加载回复...