#include <iostream> using namespace std; string a; void obroc(int p, int k){ int d=(k-p)/2; char b; for(int i=0;i<d;i++){ b=a[p+i]; a[p+i]=a[k-i]; a[k-i]=b; } } bool czy(string b){ int x; char d; for(int i=0;i<b.size();i++){ if(a[i]!=b[i]){ d=b[i]; if(a.find(d,i)==string::npos){ return 0; } x=a.find(d,i); while((x-i)%2!=0 && a.find(d,x+1)!=string::npos){ x=a.find(d,x+1); } if(a.find(d,x+1)==string::npos && (x-i)%2!=0){ return 0; } else if((x-i)%2==0){ obroc(i,x); } else { return 0; } } } return 1; } int main(){ int rozmiar; string b; cin>>rozmiar>>a>>b; if(czy(b)){ cout<<"TAK"; } else { cout<<"NIE"; } }
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 | #include <iostream> using namespace std; string a; void obroc(int p, int k){ int d=(k-p)/2; char b; for(int i=0;i<d;i++){ b=a[p+i]; a[p+i]=a[k-i]; a[k-i]=b; } } bool czy(string b){ int x; char d; for(int i=0;i<b.size();i++){ if(a[i]!=b[i]){ d=b[i]; if(a.find(d,i)==string::npos){ return 0; } x=a.find(d,i); while((x-i)%2!=0 && a.find(d,x+1)!=string::npos){ x=a.find(d,x+1); } if(a.find(d,x+1)==string::npos && (x-i)%2!=0){ return 0; } else if((x-i)%2==0){ obroc(i,x); } else { return 0; } } } return 1; } int main(){ int rozmiar; string b; cin>>rozmiar>>a>>b; if(czy(b)){ cout<<"TAK"; } else { cout<<"NIE"; } } |