Guest User

Untitled

a guest
May 21st, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.98 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. struct transaction_str{
  5. int id;
  6. string email,phone,card;
  7. };
  8.  
  9. struct transaction_group{
  10. vector<int> id;
  11. vector<string> email,phone,card;
  12. };
  13.  
  14. transaction_group ans[1000000];
  15. transaction_str transaction[1000000];
  16. bool f[1000000] = {0};
  17. /* test case =
  18. {id: 1, email: 'e1', phone: 'p1', card: 'c1'},
  19. {id: 2, email: 'e2', phone: 'p3', card: 'c2'},
  20. {id: 3, email: 'e1', phone: 'p3', card: 'c3'},
  21. {id: 4, email: 'e4', phone: 'p4', card: 'c4'},
  22. {id: 5, email: 'e2', phone: 'p4', card: 'c5'},
  23. {id: 6, email: 'e3', phone: 'p3', card: 'c1'},
  24. {id: 7, email: 'e5', phone: 'p7', card: 'c2'},
  25. {id: 8, email: 'e6', phone: 'p4', card: 'c5'},
  26. */
  27. int main(){
  28. //Assume input from file name "inputf.in"
  29. ifstream iFile("inputf.in");
  30. string s;
  31. int cnt = 0,idx = 0;
  32. while (true) {
  33. getline(iFile,s);
  34. //cout<<s<<"\n";
  35. string w1,w2;
  36. if (s == "transaction") continue;
  37. //Parsing input
  38. s.erase(remove(s.begin(),s.end(),','),s.end());
  39. s.erase(remove(s.begin(),s.end(),'{'),s.end());
  40. s.erase(remove(s.begin(),s.end(),'}'),s.end());
  41. s.erase(remove(s.begin(),s.end(),'\''),s.end());
  42. s.erase(remove(s.begin(),s.end(),':'),s.end());
  43. s.erase(remove(s.begin(),s.end(),'('),s.end());
  44. s.erase(remove(s.begin(),s.end(),')'),s.end());
  45. s.erase(remove(s.begin(),s.end(),'='),s.end());
  46. s.erase(remove(s.begin(),s.end(),'['),s.end());
  47. s.erase(remove(s.begin(),s.end(),']'),s.end());
  48. stringstream str(s);
  49. //cout<<s<<"\n";
  50. ++cnt;
  51. while (str >> w1 >> w2){
  52. if (w1 == "id") transaction[cnt].id = stoi(w2);
  53. //cout<<w1<<" "<<w1<<"\n";
  54. if (w1 == "email") transaction[cnt].email = w2;
  55. if (w1 == "phone") transaction[cnt].phone = w2;
  56. if (w1 == "card") transaction[cnt].card = w2;
  57. }
  58. //cout<<s<<'\n';
  59. if( iFile.eof() ) break;
  60. }
  61. for (int i=1; i<=cnt; i++){
  62. if (!f[i]){
  63. ++idx;
  64. for (int j=i; j<=cnt; j++){
  65. if (!f[j] and (transaction[j].email == transaction[i].email or transaction[j].phone == transaction[i].phone or transaction[j].card == transaction[i].card)){
  66. f[j] = true;
  67. ans[idx].id.push_back(transaction[j].id);
  68. ans[idx].email.push_back(transaction[j].email);
  69. ans[idx].phone.push_back(transaction[j].phone);
  70. ans[idx].card.push_back(transaction[j].card);
  71. }
  72. }
  73. }
  74. }
  75. for (int i=1; i<=idx; i++){
  76. cout<<"customer"<<i<<":\n";
  77. cout<<"transactions:[";
  78. for (int j=0; j<ans[i].id.size(); j++){
  79. if (j == 0) cout<<ans[i].id[j];
  80. else cout<<','<<ans[i].id[j];
  81. }
  82. cout<<"],\n";
  83. cout<<"email:[";
  84. for (int j=0; j<ans[i].email.size(); j++){
  85. if (j == 0) cout<<ans[i].email[j];
  86. else cout<<','<<ans[i].email[j];
  87. }
  88. cout<<"],\n";
  89. cout<<"phone:[";
  90. for (int j=0; j<ans[i].phone.size(); j++){
  91. if (j == 0) cout<<ans[i].phone[j];
  92. else cout<<','<<ans[i].phone[j];
  93. }
  94. cout<<"],\n";
  95. cout<<"cards:[";
  96. for (int j=0; j<ans[i].card.size(); j++){
  97. if (j == 0) cout<<ans[i].card[j];
  98. else cout<<','<<ans[i].card[j];
  99. }
  100. cout<<"]\n";
  101. }
  102. }
Add Comment
Please, Sign In to add comment