#include <iostream> #include <map> #include <queue> int main() { std::ios_base::sync_with_stdio(0); std::cin.tie(0); int n; std::cin >> n; std::string one_str, two_str; std::cin >> one_str >> two_str; if (one_str.length() != two_str.length()) { std::cout << "NIE" << std::endl; return 0; } std::priority_queue<char> que_one_nopair, que_one_pair, que_two_nopair, que_two_pair; for (int i = 1; i < one_str.length(); i+=2) { que_one_pair.push(one_str.at(i)); que_one_nopair.push(one_str.at(i-1)); } if (one_str.length() % 2 != 0) { que_one_nopair.push(one_str.at(one_str.length() - 1)); } for (int i = 1; i < two_str.length(); i += 2) { que_two_pair.push(two_str.at(i)); que_two_nopair.push(two_str.at(i - 1)); } if (two_str.length() % 2 != 0) { que_two_nopair.push(two_str.at(two_str.length() - 1)); } bool yes = true; while (!que_one_nopair.empty()) { char ch = que_one_nopair.top(); que_one_nopair.pop(); char ch2 = que_two_nopair.top(); que_two_nopair.pop(); if (ch != ch2) { yes = false; break; } } if (yes) { while (!que_one_pair.empty()) { char ch = que_one_pair.top(); que_one_pair.pop(); char ch2 = que_two_pair.top(); que_two_pair.pop(); if (ch != ch2) { yes = false; break; } } } std::cout << (yes ? "TAK" : "NIE") << std::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 | #include <iostream> #include <map> #include <queue> int main() { std::ios_base::sync_with_stdio(0); std::cin.tie(0); int n; std::cin >> n; std::string one_str, two_str; std::cin >> one_str >> two_str; if (one_str.length() != two_str.length()) { std::cout << "NIE" << std::endl; return 0; } std::priority_queue<char> que_one_nopair, que_one_pair, que_two_nopair, que_two_pair; for (int i = 1; i < one_str.length(); i+=2) { que_one_pair.push(one_str.at(i)); que_one_nopair.push(one_str.at(i-1)); } if (one_str.length() % 2 != 0) { que_one_nopair.push(one_str.at(one_str.length() - 1)); } for (int i = 1; i < two_str.length(); i += 2) { que_two_pair.push(two_str.at(i)); que_two_nopair.push(two_str.at(i - 1)); } if (two_str.length() % 2 != 0) { que_two_nopair.push(two_str.at(two_str.length() - 1)); } bool yes = true; while (!que_one_nopair.empty()) { char ch = que_one_nopair.top(); que_one_nopair.pop(); char ch2 = que_two_nopair.top(); que_two_nopair.pop(); if (ch != ch2) { yes = false; break; } } if (yes) { while (!que_one_pair.empty()) { char ch = que_one_pair.top(); que_one_pair.pop(); char ch2 = que_two_pair.top(); que_two_pair.pop(); if (ch != ch2) { yes = false; break; } } } std::cout << (yes ? "TAK" : "NIE") << std::endl; return 0; } |