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
AC × 26
WA × 2
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