Submission #147630

#TimeUsernameProblemLanguageResultExecution timeMemory
147630JovanK26Ljetopica (COI19_ljetopica)C++14
0 / 100
3 ms504 KiB
#include <bits/stdc++.h> using namespace std; unsigned long long n,k; string path; string a; string b; unsigned long long aval=0; unsigned long long bval=0; unsigned long long rez=0; set<unsigned long long> s; void solve(unsigned long long start,unsigned long long k,unsigned long long n,bool chk) { if(n==path.size()) { if(!s.count(start) && start>=aval && start<=bval) { rez+=start; rez%=1000000007; s.insert(start); //cout << start << endl; } return; } if(k==0) { if(!chk) { if(path[n]=='L')solve(2*start,k,n+1,chk); else { solve(2*start+1,k,n+1,chk); } } else { if(path[n]=='R')solve(2*start,k,n+1,chk); else { solve(2*start+1,k,n+1,chk); } } } else { if(!chk) { solve(2*start,k,n+1,chk); solve(2*start+1,k-1,n+1,chk^1); } else { solve(2*start+1,k,n+1,chk); solve(2*start,k-1,n+1,chk^1); } } } int main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> n >> k; cin >> path; cin >> a; cin >> b; unsigned long long br=0; for(unsigned long long i=a.size()-1;i>=0;i--) { if(a[i]=='1')aval+=(1<<br); br++; } br=0; for(unsigned long long i=b.size()-1;i>=0;i--) { if(b[i]=='1')bval+=(1<<br); br++; } solve(1,k,0,0); solve(1,k,0,1); cout << rez; 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...