SHARE
TWEET

Untitled

a guest Apr 23rd, 2019 78 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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.  
  45.     cin>>m;
  46.     cin.ignore();
  47.  
  48.     for(size_t i = 0; i < m; ++i){
  49.         string s;
  50.         getline(cin, s);
  51.         string sh = s;
  52.  
  53.         int k = 0; //инд старой строки
  54.         int j = 0; //инд новой строки
  55.         int pr = 0;
  56.  
  57.         while(pr < 3){ // до третьего пробела в шаблоне
  58.             if(s[k] == ' '){
  59.                 ++pr;
  60.             }
  61.  
  62.             if(isdigit(s[k]) || s[k] == 'X' ){
  63.                 sh[j] = s[k];
  64.                 ++j;
  65.              }
  66.             ++k;
  67.         }
  68.          sh = sh.substr(0,j);
  69.  
  70.         ms.push_back(make_pair(s, sh)); // пары шаблон - номер с иксами без символов
  71.     }
  72.  
  73.     for(int i = 0; i < n; ++i)
  74.          for(int j = 0; j < m; ++j){
  75.  
  76.              if(ns[i].length() == ms[j].second.length()){
  77.                  auto itn = ns[i].begin();
  78.                  auto itm = ms[j].second.begin();
  79.  
  80.                  while (*itn == *itm|| *itm == 'X') {
  81.                      if(itn == ns[i].end() && itm == ms[i].second.end()){
  82.                          break;
  83.                      }
  84.                      if(*itm == 'X'){
  85.                          break;
  86.                      }
  87.                      ++itn;
  88.                      ++itm;
  89.                  }
  90.  
  91.                  if(itn == ns[i].end() && itm == ms[i].second.end()){
  92.                                      cout<<ms[j].first<<endl;
  93.                                      break;
  94.                  }
  95.  
  96.                  else if(*itm == 'X'){
  97.                         string newstr = ms[j].first;
  98.                         auto it = newstr.begin();
  99.                         while(it != newstr.end()){
  100.                             if(*it == 'X'){
  101.                                 break;
  102.                             }
  103.                             ++it;
  104.                         }
  105.  
  106.                         if(*it == 'X'){
  107.  
  108.                             while(*it == 'X'){
  109.                                 *(it++) = *(itn++);
  110.                             }
  111.                              cout<<newstr<<endl;
  112.                              break;
  113.                         }
  114.                  }
  115.              }
  116.     }
  117.  }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top