Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <queue>
- #include <stack>
- #include <algorithm>
- #include <unordered_map>
- #include <cstring>
- #include <set>
- #include <map>
- #include <queue>
- #include <iterator>
- #include <algorithm>
- using namespace std;
- typedef pair<string, string> pp;
- int main(){
- ios::sync_with_stdio(false);
- vector<string> ns;
- vector<pp> ms;
- int n,m;
- cin>>n;
- cin.ignore();
- for(int i = 0; i < n; ++i){ //строки c номерами без доп символов
- string s;
- getline(cin, s);
- int k = 0;
- int j = 0;
- while(k < s.length()){
- if(isdigit(s[k])){
- s[j] = s[k];
- ++j;
- }
- ++k;
- }
- s = s.substr(0,j); // c нулями че-т сделай
- ns.push_back(s);
- }
- cin>>m;
- cin.ignore();
- for(size_t i = 0; i < m; ++i){
- string s;
- getline(cin, s);
- string sh = s;
- int k = 0; //инд старой строки
- int j = 0; //инд новой строки
- int pr = 0;
- while(pr < 3){ // до третьего пробела в шаблоне
- if(s[k] == ' '){
- ++pr;
- }
- if(isdigit(s[k]) || s[k] == 'X' ){
- sh[j] = s[k];
- ++j;
- }
- ++k;
- }
- sh = sh.substr(0,j);
- ms.push_back(make_pair(s, sh)); // пары шаблон - номер с иксами без символов
- }
- for(int i = 0; i < n; ++i)
- for(int j = 0; j < m; ++j){
- if(ns[i].length() == ms[j].second.length()){
- auto itn = ns[i].begin();
- auto itm = ms[j].second.begin();
- while (*itn == *itm|| *itm == 'X') {
- if(itn == ns[i].end() && itm == ms[i].second.end()){
- break;
- }
- if(*itm == 'X'){
- break;
- }
- ++itn;
- ++itm;
- }
- if(itn == ns[i].end() && itm == ms[i].second.end()){
- cout<<ms[j].first<<endl;
- break;
- }
- else if(*itm == 'X'){
- string newstr = ms[j].first;
- auto it = newstr.begin();
- while(it != newstr.end()){
- if(*it == 'X'){
- break;
- }
- ++it;
- }
- if(*it == 'X'){
- while(*it == 'X'){
- *(it++) = *(itn++);
- }
- cout<<newstr<<endl;
- break;
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement