fork download
  1. #include <iostream>
  2. using namespace std;
  3. struct field{
  4. string f;
  5. string s;
  6. int num;
  7. };
  8. void prints(field arr[], int n, string p[], string q[], string l[], string m[], string b[]){
  9. int ind =0;
  10. for(int i =0;i<n;i++){
  11. if(arr[i].num == 1){
  12. p[i] = arr[i%n].f;
  13. b[ind++] = p[i];
  14. q[i] = arr[i%n].s;
  15. b[ind++] = q[i];
  16.  
  17. }
  18. else if(arr[i].num ==0){
  19. l[i] = arr[i%n].f;
  20. b[ind++] = l[i];
  21. m[i] = arr[i%n].s;
  22. b[ind++] = m[i];
  23. }
  24. else{
  25. p[i] = arr[i%n].f;
  26. b[ind++] = p[i];
  27. q[i] = arr[i%n].f;
  28. b[ind++] = q[i];
  29. l[i] = arr[i%n].f;
  30. b[ind++] = l[i];
  31. m[i] = arr[i%n].f;
  32. b[ind++] = m[i];
  33. }
  34. }
  35. }
  36. void sort(field arr[], int n) {
  37.  
  38. string p[n], q[n], l[n], m[n], b[4*n];
  39. prints(arr, n, p, q, l, m, b);
  40. int i = 0;
  41. bool swapped = true;
  42. while (i < n - 1 && swapped) {
  43. swapped = false;
  44. for (int j = 0; j < n - i - 1; j++) {
  45. int k = 0;
  46. while (b[j][k] == b[j + 1][k]) {
  47. k++;
  48. }
  49. if (b[j][k] > b[j + 1][k]) {
  50. string temp = b[j];
  51. b[j] = b[j + 1];
  52. b[j + 1] = temp;
  53. swapped = true;
  54. }
  55. }
  56. i++;
  57. }
  58. for(int i =0;i<4*n;i++){
  59. cout<<b[i]<<" ";
  60. }
  61. }
  62.  
  63. int main() {
  64. int n;
  65. cin>>n;
  66. field arr[n];
  67. for(int i =0;i<n;i++){
  68. cin>>arr[i].f>>arr[i].s>>arr[i].num;
  69. }
  70. sort(arr, n);
  71.  
  72. return 0;
  73. }
  74.  
Success #stdin #stdout 0.01s 5304KB
stdin
6
Jo4e Ma,ry 1
ElizaBet5h June 1
Joe John 0
Joe, JuNe 0
John JUne 1
Margaret
stdout
ElizaBet5h Jo4e Joe John June Ma,ry Joe, JuNe John JUne Margaret Margaret Margaret Margaret