208 int mt[50],lt[50], j=n-1, i=0, m=0;
211 int ip=(j+i)>>1, q=j; Tem ta=
a[ip];
a[ip]=
a[i];
int tb=b[ip]; b[ip]=b[i];
212 for(
int k =i+1; k<=q; ++k) {
213 if(
a[k]<=ta)
continue;
217 Tem
x=
a[k];
a[k]=
a[l];
a[l]=
x;
218 int y=b[k]; b[k]=b[l]; b[l]=
y; q=l-1;
break;
220 if(--l< k) {q=k-1;
break;}
223 a[i]=
a[q];
a[q]=ta; b[i]=b[q]; b[q]=tb;
224 if((q<<1)>i+j) {lt[m]=i; mt[m++]=q-1; i=q+1;}
225 else {lt[m]=q+1; mt[m++]=j; j=q-1;}
228 if(i<j &&
a[i]>
a[j]) {
229 Tem
x=
a[i];
a[i]=
a[j];
a[j]=
x;
230 int y=b[i]; b[i]=b[j]; b[j]=
y;