Submission #1143344

#TimeUsernameProblemLanguageResultExecution timeMemory
1143344adimiclaus15새로운 문제 (POI13_spa)C++20
24 / 100
373 ms11316 KiB
#pragma GCC optimize("O3,unroll-loops") #include <bits/stdc++.h> using namespace std; const int NMAX = 4194310; bool f[NMAX+5],ajuns[NMAX+5]; queue<int>q;int n,nr2=0; void BFS(){ while(!q.empty()){ int nr=q.front();q.pop(); for(int i=0;i<n;i++){ int nrr=nr; if((nr&(1<<i))!=0){nrr-=(1<<i);} else{nrr+=(1<<i);} if(nrr==nr2){ajuns[nr2]=1;return;} if(f[nrr]==0&&ajuns[nrr]==0){ q.push(nrr);ajuns[nrr]=1; } } if(ajuns[nr2]==1){return;} } } int main() { int k;cin>>n>>k;string a,b,s;cin>>a>>b; int nr1=0; reverse(a.begin(),a.end()); reverse(b.begin(),b.end()); for(int i=0;i<a.size();i++){ if(a[i]=='1'){nr1=nr1+(1<<i);} } for(int i=0;i<b.size();i++){ if(b[i]=='1'){nr2=nr2+(1<<i);} } for(int i=1;i<=k;i++){ cin>>s;int nr=0; reverse(s.begin(),s.end()); for(int j=0;j<s.size();j++){ if(s[j]=='1'){nr=nr+(1<<j);} } f[nr]=1; } q.push(nr1);ajuns[nr1]=1; if(nr1==nr2){ cout<<"TAK"<<'\n';return 0; } BFS(); if(ajuns[nr2]==0){ cout<<"NIE"<<'\n'; } else{ cout<<"TAK"<<'\n'; } 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...