//*******************************************************************
// NOTE: please read the 'More Info' tab to the right for shortcuts.
//*******************************************************************
import java.lang.Math; // headers MUST be above the first class
// one class needs to have a main() method
class Ideone
{
static int counter;
// arguments are passed using the text field below this editor
public static void main
(String[] args
) {
int a[] = {10,9,8,7,6,5,4,3,2,1};
quickSort(a,0,10);
for (int i=0;i<10;i++) {
}
}
public static void quickSort(int[] toSort, int l, int r){
if(r - l <= 1)return;
counter += r - l - 1;
int p = choosePivot(l, r);
int pivot = toSort[p];
int oldP = toSort[p];
toSort[p] = toSort[l];
toSort[l] = oldP;
int i = l + 1;
for(int j = l + 1; j < r; j++){
if(toSort[j] < pivot){
int swap = toSort[j];
toSort[j] = toSort[i];
toSort[i] = swap;
i++;
}
}
oldP = toSort[i - 1];
toSort[i - 1] = toSort[l];
toSort[l] = oldP;
quickSort(toSort, l, i-1);
quickSort(toSort, i, r);
}
public static int choosePivot(int m, int n){
return n - 1;
//return m;
}
}
Ly8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi8vIE5PVEU6IHBsZWFzZSByZWFkIHRoZSAnTW9yZSBJbmZvJyB0YWIgdG8gdGhlIHJpZ2h0IGZvciBzaG9ydGN1dHMuCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKaW1wb3J0IGphdmEubGFuZy5NYXRoOyAvLyBoZWFkZXJzIE1VU1QgYmUgYWJvdmUgdGhlIGZpcnN0IGNsYXNzCgovLyBvbmUgY2xhc3MgbmVlZHMgdG8gaGF2ZSBhIG1haW4oKSBtZXRob2QKY2xhc3MgSWRlb25lCnsKICBzdGF0aWMgaW50IGNvdW50ZXI7CiAgLy8gYXJndW1lbnRzIGFyZSBwYXNzZWQgdXNpbmcgdGhlIHRleHQgZmllbGQgYmVsb3cgdGhpcyBlZGl0b3IKICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKQogIHsKICAgIGludCBhW10gPSB7MTAsOSw4LDcsNiw1LDQsMywyLDF9OwogICAgcXVpY2tTb3J0KGEsMCwxMCk7CiAgICBmb3IgKGludCBpPTA7aTwxMDtpKyspIHsKICAgICAgU3lzdGVtLm91dC5wcmludChhW2ldKTsKICAgIH0KICB9CiAgCiAgcHVibGljIHN0YXRpYyB2b2lkIHF1aWNrU29ydChpbnRbXSB0b1NvcnQsIGludCBsLCBpbnQgcil7CiAgICBpZihyIC0gbCA8PSAxKXJldHVybjsKICAgIGNvdW50ZXIgKz0gciAtIGwgLSAxOwogICAgaW50IHAgPSBjaG9vc2VQaXZvdChsLCByKTsKICAgIGludCBwaXZvdCA9IHRvU29ydFtwXTsKICAgIGludCBvbGRQID0gdG9Tb3J0W3BdOwogICAgdG9Tb3J0W3BdID0gdG9Tb3J0W2xdOwogICAgdG9Tb3J0W2xdID0gb2xkUDsKCiAgICBpbnQgaSA9IGwgKyAxOwogICAgZm9yKGludCBqID0gbCArIDE7IGogPCByOyBqKyspewogICAgICAgIGlmKHRvU29ydFtqXSA8IHBpdm90KXsKICAgICAgICAgICAgaW50IHN3YXAgPSB0b1NvcnRbal07CiAgICAgICAgICAgIHRvU29ydFtqXSA9IHRvU29ydFtpXTsKICAgICAgICAgICAgdG9Tb3J0W2ldID0gc3dhcDsKICAgICAgICAgICAgaSsrOwogICAgICAgIH0KICAgIH0KCgogICAgb2xkUCA9IHRvU29ydFtpIC0gMV07CiAgICB0b1NvcnRbaSAtIDFdID0gdG9Tb3J0W2xdOwogICAgdG9Tb3J0W2xdID0gb2xkUDsKCQogICAgcXVpY2tTb3J0KHRvU29ydCwgbCwgaS0xKTsKICAgIHF1aWNrU29ydCh0b1NvcnQsIGksIHIpOwogIH0KCiAgcHVibGljIHN0YXRpYyBpbnQgY2hvb3NlUGl2b3QoaW50IG0sIGludCBuKXsKICAgICAgcmV0dXJuIG4gLSAxOwogICAgICAvL3JldHVybiBtOwogIH0KfQ==