Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2019
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.19 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <queue>
  4. #include <stack>
  5. #include <algorithm>
  6. #include <unordered_map>
  7. #include <cstring>
  8. #include <set>
  9. #include <map>
  10. #include <queue>
  11. #include <iterator>
  12. #include <algorithm>
  13.  
  14.  
  15. using namespace std;
  16.  
  17. typedef pair<string, string> pp;
  18.  
  19. int main(){
  20. ios::sync_with_stdio(false);
  21. vector<string> ns;
  22. vector<pp> ms;
  23. int n,m;
  24. cin>>n;
  25.  
  26. cin.ignore();
  27. for(int i = 0; i < n; ++i){ //строки c номерами без доп символов
  28. string s;
  29. getline(cin, s);
  30. int k = 0;
  31. int j = 0;
  32. while(k < s.length()){
  33.  
  34. if(isdigit(s[k])){
  35. s[j] = s[k];
  36. ++j;
  37. }
  38. ++k;
  39. }
  40. s = s.substr(0,j); // c нулями че-т сделай
  41. ns.push_back(s);
  42. }
  43.  
  44. cout<<endl;
  45. for(auto i : ns){
  46. cout<<i<<endl;
  47. }
  48.  
  49. cin>>m;
  50. cin.ignore();
  51.  
  52. for(size_t i = 0; i < m; ++i){
  53. string s;
  54. getline(cin, s);
  55. string sh = s;
  56.  
  57. int k = 0; //инд старой строки
  58. int j = 0; //инд новой строки
  59. int pr = 0;
  60.  
  61. while(pr < 3){ // до третьего пробела в шаблоне
  62. if(s[k] == ' '){
  63. ++pr;
  64. }
  65.  
  66. if(isdigit(s[k]) || s[k] == 'X' ){
  67. sh[j] = s[k];
  68. ++j;
  69. }
  70. ++k;
  71. }
  72. sh = sh.substr(0,j);
  73.  
  74. ms.push_back(make_pair(s, sh)); // пары шаблон - номер с иксами без символов
  75. }
  76.  
  77. for(int i = 0; i < n; ++i)
  78. for(int j = 0; j < m; ++j){
  79.  
  80. if(ns[i].length() == ms[j].second.length()){
  81. auto itn = ns[i].begin();
  82. auto itm = ms[j].second.begin();
  83.  
  84. while (*itn == *itm|| *itm == 'X') {
  85. if(itn == ns[i].end() && itm == ms[i].second.end()){
  86. break;
  87. }
  88. if(*itm == 'X'){
  89. break;
  90. }
  91. ++itn;
  92. ++itm;
  93. }
  94.  
  95. if(itn == ns[i].end() && itm == ms[i].second.end()){
  96. cout<<ms[j].first<<endl;
  97. cout<<"11"<<" " <<i<<endl;
  98. break;
  99. }
  100.  
  101. else if(*itm == 'X'){
  102. string newstr = ms[j].first;
  103. auto it = newstr.begin();
  104. while(it != newstr.end()){
  105. if(*it == 'X'){
  106. break;
  107. }
  108. ++it;
  109. }
  110.  
  111. if(*it == 'X'){
  112.  
  113. while(*it == 'X'){
  114. *(it++) = *(itn++);
  115. }
  116. cout<<newstr<<endl;
  117. break;
  118. }
  119. }
  120. }
  121. }
  122. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement