Submission #1168398

#TimeUsernameProblemLanguageResultExecution timeMemory
1168398Jawad_Akbar_JJWalk (POI13_spa)C++20
25 / 100
1767 ms48328 KiB
#include <iostream> #include <map> #include <queue> #include <algorithm> using namespace std; #define int long long int X, Y, o = 1; map<int, int> seen, seen1, seen2; vector<int> vec; int get(int n, int inp = 0){ while (n--){ char c; cin>>c; inp = inp * 2 + c - '0'; } return inp; } void dfs(int n, int x, int num = 0){ queue<int> Q; Q.push(x); seen[x] = 1; while (!Q.empty() and num < 100000){ int cur = Q.front(); Q.pop(); for (int i=0;i<n;i++){ cur ^= (o<<vec[i]); if (!seen2[cur] and !seen[cur]) seen[cur] = 1, Q.push(cur), num++; cur ^= (o<<vec[i]); } } } void dfs2(int n, int x, int num = 0){ queue<int> Q; Q.push(x); seen1[x] = 1; if (seen[x] == 1){ cout<<"TAK\n"; exit(0); } while (!Q.empty() and num < 100000){ int cur = Q.front(); Q.pop(); for (int i=0;i<n;i++){ cur ^= (o<<vec[i]); if (seen[cur]){ cout<<"TAK\n"; exit(0); } if (!seen2[cur] and !seen1[cur]) seen1[cur] = 1, Q.push(cur), num++; cur ^= (o<<vec[i]); } } } signed main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int n, k; cin>>n>>k; X = get(n), Y = get(n); for (int i=1;i<=k;i++) seen2[get(n)] = 1; for (int i=0;i<n;i++) vec.push_back(i); for (int i=1;i<100;i++) random_shuffle(begin(vec), end(vec)); dfs(n, X); for (int i=1;i<100;i++) random_shuffle(begin(vec), end(vec)); dfs2(n, Y); cout<<"NIE\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...