Submission #3108253
Source Code Expand
#include <iostream> #include <vector> #include <string> #include <cmath> #include <algorithm> #include <utility> #include <queue> #include <set> #include <map> #include <deque> #include <iomanip> #include <cstdio> using namespace std; typedef long long ll; typedef pair<int,int> PII; typedef vector<int> VI; typedef vector<VI> VVI; #define MP make_pair #define PB push_back #define inf 1000000007 #define mod 1000000007 #define rep(i,n) for(int i=0;i<(int)(n);++i) int main(){ int n,x,p; cin >> n >> x >> p; vector<char>a(n); rep(i,n)cin >> a[i]; vector<ll> c3(11); c3[0] = 1; for(int i=1;i<11;i++){ c3[i]=3*c3[i-1]; } vector<int> cs(177147); vector<int> ct(177147); for(int i=0;i<177147;i++){ int s=0; int t=0; int tmp = i; for(int j=0;j<11;j++){ if(tmp%3==1){ s += 1<<j; }else if(tmp%3==2){ t += 1<<j; } tmp/=3; } cs[i] = s; ct[i] = t; } vector<int> vs(2048); vector<int> vt(2048); for(int i=0;i<2048;i++){ int tmp=0; int tmp2= 0; int s = i; for(int j=0;j<11;j++){ if(s%2==1){ tmp += c3[j]; tmp2 += 2*c3[j]; } s/=2; } vs[i] = tmp; vt[i] = tmp2; } vector <ll> dp(177147); dp[1] = 1; rep(zz,n){ vector <ll> dp2(177147); if(a[zz]!='?'){ int k = a[zz]-'0'; for(int i=0;i<177147;i++){ int s=cs[i]; int t=ct[i]; int ss = s^(s<<k); ss &= 2047; int pp = s&(s<<k); pp &= 2047; s = ss; t |= (t<<k); t |= pp; t &= 2047; s -= s&t; int w = vs[s] + vt[t]; dp2[w] = (dp2[w]+dp[i])%mod; } }else{ for(int k=0;k<=p;k++){ for(int i=0;i<177147;i++){ int s=cs[i]; int t=ct[i]; int ss = s^(s<<k); ss &= 2047; int pp = s&(s<<k); pp &= 2047; s = ss; t |= (t<<k); t |= pp; t &= 2047; s -= s&t; int w = vs[s] + vt[t]; dp2[w] = (dp2[w]+dp[i])%mod; } } } dp = dp2; // for(int i=0;i<30;i++){ // cout << i << " " << dp[i] << endl; // } } ll ans = 0; for(int i=0;i<177147;i++){ if(cs[i]&(1<<x)){ ans = (ans+dp[i])%mod; } } cout << ans << endl; return 0; }
Submission Info
Submission Time | |
---|---|
Task | G - 唯一の組み合わせ |
User | mtsd |
Language | C++14 (GCC 5.4.1) |
Score | 0 |
Code Size | 2993 Byte |
Status | WA |
Exec Time | 573 ms |
Memory | 4376 KB |
Judge Result
Set Name | All | ||||
---|---|---|---|---|---|
Score / Max Score | 0 / 200 | ||||
Status |
|
Set Name | Test Cases |
---|---|
All | scrambled_00.txt, scrambled_01.txt, scrambled_02.txt, scrambled_03.txt, scrambled_04.txt, scrambled_05.txt, scrambled_06.txt, scrambled_07.txt, scrambled_08.txt, scrambled_09.txt, scrambled_10.txt, scrambled_11.txt, scrambled_12.txt, scrambled_13.txt, scrambled_14.txt, scrambled_15.txt, scrambled_16.txt, scrambled_17.txt, scrambled_18.txt, scrambled_19.txt, scrambled_20.txt, scrambled_21.txt, scrambled_22.txt, scrambled_23.txt, scrambled_24.txt, scrambled_25.txt, scrambled_26.txt, scrambled_27.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
scrambled_00.txt | AC | 24 ms | 4376 KB |
scrambled_01.txt | AC | 24 ms | 4376 KB |
scrambled_02.txt | AC | 30 ms | 4376 KB |
scrambled_03.txt | AC | 25 ms | 4376 KB |
scrambled_04.txt | AC | 30 ms | 4376 KB |
scrambled_05.txt | AC | 26 ms | 4376 KB |
scrambled_06.txt | AC | 39 ms | 4376 KB |
scrambled_07.txt | AC | 20 ms | 4376 KB |
scrambled_08.txt | AC | 36 ms | 4376 KB |
scrambled_09.txt | AC | 54 ms | 4376 KB |
scrambled_10.txt | AC | 65 ms | 4376 KB |
scrambled_11.txt | AC | 91 ms | 4376 KB |
scrambled_12.txt | AC | 340 ms | 4376 KB |
scrambled_13.txt | AC | 51 ms | 4376 KB |
scrambled_14.txt | AC | 516 ms | 4376 KB |
scrambled_15.txt | AC | 408 ms | 4376 KB |
scrambled_16.txt | AC | 309 ms | 4376 KB |
scrambled_17.txt | AC | 36 ms | 4376 KB |
scrambled_18.txt | AC | 80 ms | 4376 KB |
scrambled_19.txt | AC | 49 ms | 4376 KB |
scrambled_20.txt | AC | 73 ms | 4376 KB |
scrambled_21.txt | AC | 21 ms | 4352 KB |
scrambled_22.txt | AC | 26 ms | 4352 KB |
scrambled_23.txt | AC | 21 ms | 4376 KB |
scrambled_24.txt | AC | 21 ms | 4376 KB |
scrambled_25.txt | WA | 172 ms | 4376 KB |
scrambled_26.txt | WA | 172 ms | 4376 KB |
scrambled_27.txt | AC | 573 ms | 4376 KB |