Submission #1143125

#TimeUsernameProblemLanguageResultExecution timeMemory
1143125andreifilimon새로운 문제 (POI13_spa)C++20
24 / 100
3968 ms327680 KiB
#include <bits/stdc++.h>

using namespace std;

#define ull unsigned long long

int main()
{
    int n, k;
    string sx, sy;
    cin >> n >> k >> sx >> sy;
    auto str_to_nr = [&](const string &s) -> ull
    {
        ull nr = 0;
        for (char c : s)
            nr = (nr << 1) | (c - '0');
        return nr;
    };

    ull x = str_to_nr(sx), y = str_to_nr(sy);
    unordered_set<ull> blk;
    string s;
    int i;
    for(i = 0; i < k; i++)
    {
        cin >> s;
        blk.insert(str_to_nr(s));
    }

    if(x == y){cout << "TAK"; return 0;}
    if(blk.find(x) != blk.end() || blk.find(y) != blk.end()){cout << "NIE"; return 0;}
    queue<ull> q;
    unordered_set<ull> viz;
    q.push(x);
    viz.insert(x);
    while(!q.empty())
    {
        ull curr = q.front();
        q.pop();
        for(i = 0; i < n; i++)
        {
            ull vec = curr ^ (1ULL << (n - 1 - i));
            if(vec == y){cout << "TAK"; return 0;}
            if(blk.find(vec) == blk.end() && viz.find(vec) == viz.end())
            {
                viz.insert(vec);
                q.push(vec);
            }
        }
    }
    cout << "NIE";
}
#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...