fork download
  1. #include<iostream>
  2. using namespace std;
  3.  
  4. struct quick{
  5. int a;
  6. int b;
  7. };
  8.  
  9. void swap(int *a,int *b){
  10. int t;
  11. t=*a;
  12. *a=*b;
  13. *b=t;
  14. }
  15. int partition(quick *array,int left, int right){
  16.  
  17. int l = left;
  18. int r = right;
  19. quick temp = array[r];
  20. while( l != r ){
  21. while( array[l].a <= temp.a && r > l ){
  22. l++;
  23. }
  24.  
  25. if( l < r ){
  26. array[r] = array[l];
  27. r--;
  28. }
  29.  
  30. while( array[r].a >= temp.a && r > l ){
  31. r--;
  32. }
  33.  
  34. if( l < r ){
  35. array[l] = array[r];
  36. l++;
  37. }
  38. }
  39. array[l]=temp;
  40. return l;
  41. }
  42. int selectPivot(int left, int right){
  43. return (left + right)/2;
  44. }
  45.  
  46. void quickSort(quick array[],int left, int right){
  47. if(right <= left){ return; }
  48. int pivot = selectPivot(left,right);
  49. swap(array[pivot], array[right]);
  50. pivot = partition(array,left,right);
  51. quickSort(array,left,pivot-1);
  52. quickSort(array,pivot+1,right);
  53. }
  54.  
  55. int main(){
  56. int n;
  57. cin >> n;
  58. quick array[n];
  59. int i;
  60.  
  61. for(i=0;i<n;i++){
  62. cin >> array[i].a >> array[i].b;
  63. }
  64.  
  65. quickSort(array,0,n-1);
  66.  
  67. for(i=0;i<n;i++){
  68. cout << array[i].a<<" "<< array[i].b<<"\n";
  69. }
  70. return 0;
  71. }
  72.  
Success #stdin #stdout 0.01s 5464KB
stdin
10
6 0
19 0
0 1
0 2
5 0
21 0
21 1
0 0
8 0
11 0
stdout
0 1
0 0
0 2
5 0
6 0
8 0
11 0
19 0
21 0
21 1