#include<bits/stdc++.h> using namespace std; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n; int i; int pocz, kon; char znak; map<char,int> zab1, zab2; string str1, str2; cin>>n; /* for(int i=0; i<n; ++i){ cin>> znak; zab1[znak]++; } for(int i=0; i<n; ++i){ cin>> znak; zab2[znak]++; } if(zab1.size() != zab2.size()){ cout<<"NIE\n"; return 0; } for(auto z:zab1){ if(z.second != zab2[z.first]) { cout<<"NIE\n"; return 0; } } */ cin>>str1>>str2; vector<char> v1(str1.begin(),str1.end()); vector<char> v2(str2.begin(),str2.end()); auto it1p=v1.begin(); auto it2p=v2.begin(); auto it1k=v1.begin(); auto it2k=v2.begin(); for(; it2p != v2.end(); it2p++){ //cout<<*it2p<<" "<<*it1p<<endl; if(*it2p == *it1p){ it1p++; it1k=it1p; continue; } bool np=true; bool jest=false; for(; it1k != v1.end(); it1k++){ if(*it1k == *it2p && np){ reverse(it1p, ++it1k); it1p++; it1k=it1p; jest=true; np=!np; break; } np=!np; } if(jest==false){ cout<<"NIE\n"; return 0; } } cout<<"TAK\n"; /* testowanie for(auto a:v1) cout<<a; cout<<endl; for(auto a:v2) cout<<a; cout<<endl; */ return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 | #include<bits/stdc++.h> using namespace std; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n; int i; int pocz, kon; char znak; map<char,int> zab1, zab2; string str1, str2; cin>>n; /* for(int i=0; i<n; ++i){ cin>> znak; zab1[znak]++; } for(int i=0; i<n; ++i){ cin>> znak; zab2[znak]++; } if(zab1.size() != zab2.size()){ cout<<"NIE\n"; return 0; } for(auto z:zab1){ if(z.second != zab2[z.first]) { cout<<"NIE\n"; return 0; } } */ cin>>str1>>str2; vector<char> v1(str1.begin(),str1.end()); vector<char> v2(str2.begin(),str2.end()); auto it1p=v1.begin(); auto it2p=v2.begin(); auto it1k=v1.begin(); auto it2k=v2.begin(); for(; it2p != v2.end(); it2p++){ //cout<<*it2p<<" "<<*it1p<<endl; if(*it2p == *it1p){ it1p++; it1k=it1p; continue; } bool np=true; bool jest=false; for(; it1k != v1.end(); it1k++){ if(*it1k == *it2p && np){ reverse(it1p, ++it1k); it1p++; it1k=it1p; jest=true; np=!np; break; } np=!np; } if(jest==false){ cout<<"NIE\n"; return 0; } } cout<<"TAK\n"; /* testowanie for(auto a:v1) cout<<a; cout<<endl; for(auto a:v2) cout<<a; cout<<endl; */ return 0; } |