Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <set>
- #include <algorithm>
- #include <map>
- #include <bitset>
- #pragma GCC optimize("Ofast,no-stack-protector")
- #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,avx2,tune=native")
- #pragma GCC optimize("unroll-loops")
- #pragma GCC optimize("fast-math")
- using namespace std;
- const int LOL = 900;
- int n;
- vector <int> graph(30);
- int main() {
- ios_base::sync_with_stdio(false);
- cin.tie(nullptr);
- cout.tie(nullptr);
- cin >> n;
- for (int i = 0; i < n; i++) {
- for (int j = 0; j < n; j++) {
- char x;
- cin >> x;
- if (x == 'Y')
- graph[i] |= (1 << j);
- }
- }
- string s = "";
- for (int i = 0; i < LOL; i++)
- s += '0';
- vector <int> smth;
- for (int i = 0; i < n; i++)
- smth.push_back(i);
- random_shuffle(smth.begin(), smth.end());
- for (int i = 0; i < n; i++) {
- int all = 0;
- all |= (1 << i);
- for (int o = 0; o < LOL; ++o) {
- int new_all = 0;
- for (int v = 0; v < n; ++v) {
- if ((all >> v) & 1)
- new_all |= graph[v];
- }
- all = new_all;
- if ((all >> i) & 1)
- s[o] = '1';
- }
- }
- string ans = "(" + s + ")";
- for (int p = 0; p < 700; ++p) {
- for (int len = 1; len <= LOL; ++len) {
- if (p + len > (int)s.size())
- break;
- string need = "";
- for (int i = p; i < p + len; ++i)
- need += s[i];
- bool fl = true;
- for (int i = p + len; i < (int)s.size(); i += len) {
- string now = "";
- for (int j = i; j < min((int)s.size(), i + len); ++j)
- now += s[j];
- bool flag = true;
- //cout << p << " " << len << " " << need << " " << now << " aa\n";
- for (int k = 0; k < min((int)need.size(), (int)now.size()); k++) {
- if (need[k] != now[k]) {
- flag = false;
- break;
- }
- }
- if (!flag) {
- fl = false;
- break;
- }
- }
- if (fl) {
- string res = "";
- for (int i = 0; i < p; ++i)
- res += s[i];
- res += '(';
- res += need;
- res += ')';
- if ((int)res.size() < (int)ans.size())
- ans = res;
- }
- }
- }
- cout << ans << "\n";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement