Submission #1168398

#TimeUsernameProblemLanguageResultExecution timeMemory
1168398Jawad_Akbar_JJ새로운 문제 (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...