fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define endl '\n'
  4. #define int long long
  5. const int MOD = 1000000007;
  6. const int INF = LLONG_MAX/2;
  7. const int MAXN = 100000;
  8. int primes[1000000];
  9.  
  10. void seive(){
  11. fill(primes, primes + 1000000, 1);
  12. primes[0] = primes[1] = 0;
  13. for(int i = 2 ; i*i < 1000000 ; i++){
  14. if(primes[i]){
  15. for(int j = i*i ; j < 1000000 ; j += i){
  16. primes[j] = 0;
  17. }
  18. }
  19. }
  20. }
  21. bool isPrime(int n){
  22. if(n <= 1) return false;
  23. for(int i = 2 ; i*i <= n ; i++){
  24. if(n % i == 0) return false;
  25. }
  26. return true;
  27. }
  28. int gcd(int a, int b){
  29. if(a == 0) return b;
  30. return gcd(b % a, a);
  31. }
  32. int power(int a, int b) {
  33. int res = 1;
  34. a %= MOD;
  35. while (b > 0) {
  36. if (b & 1) res = res * a % MOD;
  37. a = a * a % MOD;
  38. b >>= 1;
  39. }
  40. return res;
  41. }
  42.  
  43. // nCr % MOD for n < MOD
  44. int nCrModP(int n, int r) {
  45. if (r > n) return 0;
  46. if (r == 0 || r == n) return 1;
  47.  
  48. int numerator = 1, denominator = 1;
  49. for (int i = 0; i < r; i++) {
  50. numerator = (numerator * (n - i)) % MOD;
  51. denominator = (denominator * (i + 1)) % MOD;
  52. }
  53. return (numerator * power(denominator, MOD - 2)) % MOD;
  54. }
  55.  
  56. // Lucas's Theorem
  57. int lucas(int n, int r) {
  58. if (r == 0) return 1;
  59. return (lucas(n / MOD, r / MOD) * nCrModP(n % MOD, r % MOD)) % MOD;
  60. }
  61. bool isAnagram(string s, string t) {
  62. int n = s.size();
  63. int m = t.size();
  64. if(n!=m){
  65. return false;
  66. }
  67. else{
  68. int map1[26];
  69. for(int i = 0 ; i<26; i++){
  70. map1[i] = 0;
  71. }
  72. for(int i = 0 ; i<n ; i++){
  73. map1[s[i]-97]++;
  74. }
  75. for(int i = 0 ; i<m ; i++){
  76. map1[t[i]-97]--;
  77. }
  78. bool flag = true;
  79. for(auto i:map1){
  80. if(i!=0){
  81. flag = false;
  82. break;
  83. }
  84. }
  85. return flag;
  86. }
  87. }
  88. bool isTwins(string s , string t){
  89. int n = s.size();
  90. int m = t.size();
  91. if(n!=m){
  92. return false;
  93. }
  94. else{
  95. string str1,str2,str3,str4;
  96. for(int i = 0 ; i<n ; i++){
  97. if(i%2==0){
  98. str1 += s[i];
  99. str2 += t[i];
  100. }
  101. else{
  102. str3 += s[i];
  103. str4 += t[i];
  104. }
  105. }
  106. if(isAnagram(str1,str2) && isAnagram(str3,str4)){
  107. return true;
  108. }
  109. return false;
  110. }
  111. }
  112. void solve() {
  113. int n;
  114. cin>>n;
  115. string str1[n];
  116. for(int i = 0 ; i<n ; i++){
  117. cin>>str1[i];
  118. }
  119. cin>>n;
  120. string str2[n];
  121. for(int i = 0 ; i<n ; i++){
  122. cin>>str2[i];
  123. }
  124. for(int i = 0 ; i<n ; i++){
  125. if(isTwins(str1[i],str2[i])){
  126. cout<<"Yes"<<" ";
  127. }
  128. else{
  129. cout<<"No"<<" ";
  130. }
  131. }
  132. cout<<endl;
  133. }
  134. signed main(){
  135. ios::sync_with_stdio(false); cin.tie(NULL);
  136. //int t;
  137. //cin >> t;
  138. //while(t--){
  139. solve();
  140. //}
  141. return 0;
  142. }
Success #stdin #stdout 0.01s 5308KB
stdin
2 cdab dcba 2 abcd abcd
stdout
Yes No