Advertisement
Guest User

Untitled

a guest
Sep 21st, 2019
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.44 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <set>
  4. #include <map>
  5. #include <unordered_set>
  6. #include <unordered_map>
  7. #include <string>
  8. #include <deque>
  9. #include <algorithm>
  10. #include <cassert>
  11. #include <random>
  12.  
  13. using namespace std;
  14.  
  15.  
  16. unordered_map<string, int> pref;
  17. string ksl[30001];
  18. char ans[30001];
  19.  
  20.  
  21. string getst(string cur, int i, int j) {
  22. string ans = "";
  23. ans += cur.substr(0, i);
  24. ans += cur.substr(i + 1, j - (i + 1));
  25. ans += cur.substr(j + 1, (int)cur.size() - (j + 1));
  26. return ans;
  27. }
  28.  
  29.  
  30. signed main() {
  31. ios::sync_with_stdio(false);
  32. cin.tie(0);
  33. cout.tie(0);
  34. int t;
  35. cin >> t;
  36. for (int ccc = 0; ccc < t; ++ccc) {
  37. int n, k;
  38. cin >> n >> k;
  39. string s;
  40. for (int i = 0; i < n; ++i) {
  41. cin >> s;
  42. ksl[i] = s;
  43. }
  44. if (k >= 17) {
  45. for (int i = 0; i < n; ++i) {
  46. for (int j = i + 1; j < n; ++j) {
  47. int gg = 0;
  48. for (int d = 0; d < k; ++d) {
  49. gg += (ksl[j][d] != ksl[i][d]);
  50. }
  51. if (gg <= 2) {
  52. ans[i] = 1;
  53. ans[j] = 1;
  54. }
  55. }
  56. }
  57. }
  58. else {
  59. for (int i = 0; i < k - 1; ++i) {
  60. for (int j = i + 1; j < k; ++j) {
  61. for (int pos = 0; pos < n; ++pos) {
  62. string cur = getst(ksl[pos], i, j);
  63. if (pref.find(cur) != pref.end()) {
  64. ans[pos] = 1;
  65. ans[pref[cur]] = 1;
  66. }
  67. else {
  68. pref[cur] = pos;
  69. }
  70. }
  71. pref.clear();
  72. }
  73. }
  74. }
  75. for (int i = 0; i < n; i++)
  76. cout << ans[i];
  77. for (int i = 0; i < n; i++)
  78. ans[i] = 0;
  79. cout << '\n';
  80. }
  81. return 0;
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement