Advertisement
Guest User

Untitled

a guest
Nov 17th, 2019
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.77 KB | None | 0 0
  1. #include<iostream>
  2. #include<vector>
  3. using namespace std;
  4.  
  5. struct node
  6. {
  7. char value;
  8. node *link;
  9. };
  10.  
  11. int main()
  12. {
  13. int group;
  14. cin >> group;
  15.  
  16. vector <vector<char>> customer(group);
  17. int i,j,member;
  18. char cust;
  19. for(i=0; i<group; ++i)
  20. {
  21. cin >> member;
  22. for(j=0; j<member; ++j)
  23. {
  24. cin >> cust;
  25. customer[i].push_back(cust);
  26. }
  27. }
  28.  
  29. string status;
  30. node *head = NULL, *temp, *hold, *brief;
  31. int pos = 200;
  32. bool same = false;
  33. while(!cin.eof())
  34. {
  35. cin >> status;
  36. if(status == "enqueue")
  37. {
  38. cin >> cust;
  39. if(head == NULL)
  40. {
  41. hold = new node();
  42. hold->value = cust;
  43. head = hold;
  44. temp = hold;
  45. brief = hold;
  46. }
  47. else
  48. {
  49. // check if the input is repeated
  50. // if repeated the don't care
  51. while(brief != NULL)
  52. {
  53. if(cust != brief->value)
  54. same = true;
  55. brief = brief->link;
  56. }
  57. brief = head;
  58.  
  59. if(same == true)
  60. {
  61. // check customer group number
  62. for(i=0; i<group; ++i)
  63. for(j=0; j<customer[i].size(); ++j)
  64. if(cust == customer[i][j])
  65. pos = i;
  66.  
  67. // if not in any group
  68. if(pos > group)
  69. {
  70. hold = new node();
  71. hold->value = cust;
  72. temp->link = hold;
  73. temp = temp->link;
  74. }
  75. else if(pos <= group) // if in group
  76. {
  77. hold = new node();
  78. hold->value = cust;
  79. while(brief != NULL)
  80. {
  81. for(i=0; i<group; ++i)
  82. {
  83. for(j=0; j<customer[i].size(); ++j)
  84. {
  85. if(brief->value == customer[i][j])
  86. {
  87. if(pos == i)
  88. {
  89. // cout << "test" << endl;
  90. hold->link = temp;
  91. brief->link = hold;
  92. }
  93. }
  94. }
  95. }
  96. cout << brief->value << " ";
  97. brief = brief->link;
  98. }
  99. brief = head;
  100. }
  101.  
  102. }
  103. }
  104. same = false;
  105. pos = 200;
  106. }
  107. }
  108.  
  109. delete head,temp,hold,brief;
  110. return 0;
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement