Submission #1168399

#TimeUsernameProblemLanguageResultExecution timeMemory
1168399ghammazhassan새로운 문제 (POI13_spa)C++20
0 / 100
3394 ms145260 KiB
// #include <bits/stdc++.h>
#include <iostream>
#include <cmath>
#include <algorithm>
#include <map>
#include <vector>
#include <iomanip>
#include <string>
#include <queue>
#include <set>
#include <deque>
using namespace std;
#define int long long
#define fi first
#define se second
const int N=5e6+5;
const int M=1e9+7;
const int LOG = 20;
int n , m , k , c , d , t=1 , q=1 , x , y , p[N] , l , r;
vector<vector<int>>a(N);

int bp(int x,int y){
	x=x%M;
	if (y==0)return 1;
	if (y==1)return x;
	int r=bp(x*x,y/2);
	if (y%2)r*=x;
	r%=M;
	return r;
}
int inv(int x){
	return bp(x,M-2);
}
string its(int x){
	string s;
	while (x>1){
		s+='0'+x%2;
		x/=2;
	}
	while (s.size()<n){
		s+='0';
	}
	reverse(s.begin(),s.end());
	return s;
}
int sti(string s){
	int x=0;
	for (int i=0;i<n;i++){
		x+=(1<<(n-i-1))*(int)(s[i]-'0');
	}
	return x;
}
void solve()
{	
	cin >> n >> k;
	string s,t;
	cin >> s >> t;
	x=sti(s);
	y=sti(t);
	map<string,int>d;
	for (int e=0;e<k;e++){
		string f;
		cin >> f;
		d[f]=1;
	}
	int g=1e6;
	while(s!=t and g--){
		bool f=0;
		for (int i=0;i<n;i++){
			if (s[i]!=t[i]){
				s[i]='0'+((s[i]-'0')^1);
				if (d[s]){
					s[i]='0'+((s[i]-'0')^1);
					continue;
				}
				f=1;
			}
		}
		for (int i=0;i<n;i++){
			if (s[i]!=t[i]){
				t[i]='0'+((t[i]-'0')^1);
				if (d[t]){
					t[i]='0'+((t[i]-'0')^1);
					continue;
				}
				f=1;
			}
		}
		if (f==0){
			for (int i=n-1;i>=0;i--){
				if (s[i]==t[i]){
					t[i]='0'+((t[i]-'0')^1);
					if (d[t]){
						t[i]='0'+((t[i]-'0')^1);
						continue;
					}
					f=1;
					break;
				}
			}
		}
	}
	// cout << s << endl;
	// cout << t << endl;
	if (s==t){
		cout << "TAK" << endl;
	}
	else{
		cout << "NIE" << endl;
	}
}
signed main()	
{

    ios::sync_with_stdio(0);//DO NOT USE IN INTERACTIVE
    cin.tie(0), cout.tie(0);//DO NOT USE IN INTERACTIVE
    cout << fixed<<setprecision(9);
    // int t=1;
    // cin >> t;
    for (int _=1;_<=t;_++){
    	solve();
    	q++;
    }
}
#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...