fork(1) download
  1. #include <iostream>
  2. #include <string>
  3. #include <math.h>
  4.  
  5. using namespace std;
  6.  
  7. void fun_drukuj(string *tab,int n);
  8. void quicksort(string *tablica, int p, int q);
  9. float odl(string a);
  10. int ile;
  11.  
  12. int main()
  13. {
  14. cin>>ile; // liczba testow
  15. while(ile--)
  16. {
  17. int n;
  18. cin>>n; // liczba punktow
  19.  
  20. string *str1;
  21. str1 = new string [n]; //dynamiczna alokacja tablicy
  22.  
  23. for ( int i=0; i<n; i++)
  24. {
  25. string str;
  26. std::cin.sync();
  27. getline(cin,str); //wczytanie lini
  28. str1[i]=str; //pisanie lini w tablice
  29.  
  30.  
  31. }
  32.  
  33. quicksort(str1,0,n-1); //sortowanie
  34. fun_drukuj(str1,n); // wyświetlanie posortowanych pkt
  35. cout<<endl;
  36. delete [] str1;
  37. }
  38. return 0;
  39. }
  40.  
  41.  
  42. void fun_drukuj(string *tab,int n)
  43. {
  44.  
  45. for(int i=0; i<n; i++)
  46. {
  47. cout << tab[i] << endl;
  48. }
  49. }
  50.  
  51. void quicksort(string *tablica, int p, int q)
  52. {
  53. string v=tablica[(p+q)/2];
  54. int i,j;
  55. string x;
  56. i=p;
  57. j=q;
  58. do
  59. {
  60. while (odl(tablica[i])<odl(v)) i++; // porównanie odleglosci
  61. while (odl(tablica[j])>odl(v)) j--;
  62. if(i<=j)
  63. {
  64. x=tablica[i];
  65. tablica[i]=tablica[j];
  66. tablica[j]=x;
  67. i++;
  68. j--;
  69. }
  70. }
  71. while(i<=j);
  72. if(j>p) quicksort(tablica,p, j);
  73. if(i<q) quicksort(tablica, i, q);
  74. }
  75.  
  76. float odl(string a) //funkcja obliczajaca odleglosc
  77. {
  78. int x,y,t;
  79. float s;
  80. x=(int)a[1]-48;
  81. y=(int)a[2]-48;
  82. t=pow(x,2)+pow(y,2);
  83. s=pow(t,0.5);
  84. return s;
  85. }
  86.  
Success #stdin #stdout 0s 15240KB
stdin
2
3
A 0 0
C 5 5
B 1 -1

1 
X 1 1
stdout
A 0 0
C 5 5