Submission #1143168

#TimeUsernameProblemLanguageResultExecution timeMemory
1143168alexnicu새로운 문제 (POI13_spa)C++20
12 / 100
487 ms243380 KiB
#include <iostream> #include <string> #include <vector> #include <queue> using namespace std; bool existing_numbers[(1<<23) + 5]; int string_to_number( string s ) { int ans = 0, pow = 0; for ( int i = s.size() - 1; i >= 0; i-- ) { if ( s[i] == '1' ) { ans = ans + ( 1 << pow ); } pow++; } return ans; } int finish; bool ans = false; int n; void dfs( int node ) { if (node == finish ) { ans = true; return; } int cx = node; for ( int i = n - 1; i >= 0; i-- ) { if ( node >= (1 << i) ){ if(existing_numbers[cx - (1 << i)] == false){ existing_numbers[cx - (1 << i)] = true; dfs(cx - (1 << i)); } node -= (1 << i); } else if(existing_numbers[cx + (1 << i)] == false){ existing_numbers[cx + (1 << i)] = true; dfs(cx + (1 << i)); } } return; } int main() { int k; cin >> n >> k; string a, b; cin >> a >> b; int start; start = string_to_number(a); finish = string_to_number(b); string s; for ( int i = 1; i <= k; i++ ) { cin >> s; existing_numbers[string_to_number(s)] = true; } existing_numbers[start] = true; dfs(start); if ( ans == true ) cout << "TAK"; else cout << "NIE"; return 0; }
#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...