Submission #344501
Source Code Expand
#include <algorithm> #include <cstdio> #include <cstdlib> #include <cctype> #include <cmath> #include <iostream> #include <queue> #include <list> #include <map> #include <numeric> #include <set> #include <sstream> #include <string> #include <vector> using namespace std; #define REP(i,a,n) for(int i=(a); i<(int)(n); i++) #define rep(i,n) REP(i,0,n) #define FOR(it,c) for(__typeof((c).begin()) it=(c).begin(); it!=(c).end(); ++it) #define ALLOF(c) (c).begin(), (c).end() typedef long long ll; #define MOD 1000000007 int dp[255][3][255][255]; int main(){ int N, X; string str; cin >> N >> X; cin >> str; if(str[0] == '?'){ dp[0][1][1][0] = 1; dp[0][2][0][0] = 1; dp[0][0][0][0] = 8; }else{ int t = str[0]-'0'; if(t==2){ dp[0][1][1][0] = 1; } else if(t==5){ dp[0][2][0][0] = 1; } else{ dp[0][0][0][0] = 1; } } rep(i,N-1){ rep(j,3){ rep(k,N){ rep(l,X+1){ //cout << i << " " << j << " " << k << " " << l << " " << dp[i][j][k][l] << endl; if(str[i+1]=='?'){ rep(t,3){ if(t==1){ if(j==2){ dp[i+1][t][k+1][l] += dp[i][j][k][l]; dp[i+1][t][k+1][l] %= MOD; } else if(j==1){ dp[i+1][t][1][l] += dp[i][j][k][l]; dp[i+1][t][1][l] %= MOD; } else{ dp[i+1][t][1][l] = (dp[i+1][t][1][l] + dp[i][j][k][l])%MOD; } } else if(t==2){ if(j==1){ dp[i+1][t][k+1][min(X,l+(k+1)/2)] += dp[i][j][k][l]; dp[i+1][t][k+1][min(X,l+(k+1)/2)] %= MOD; } else if(j==2){ dp[i+1][t][0][l] += dp[i][j][k][l]; dp[i+1][t][0][l] %= MOD; } else{ dp[i+1][t][0][l] = (dp[i+1][t][0][l] + dp[i][j][k][l])%MOD; } } else{ dp[i+1][t][0][l] = (dp[i+1][t][0][l] + 8LL*dp[i][j][k][l])%MOD; dp[i+1][t][0][l] %= MOD; } } }else{ int in = str[i+1]-'0'; int t = 0; if(in == 2) t = 1; if(in == 5) t = 2; if(t==1){ if(j==2){ dp[i+1][t][k+1][l] += dp[i][j][k][l]; dp[i+1][t][k+1][l] %= MOD; } else if(j==1){ dp[i+1][t][1][l] += dp[i][j][k][l]; dp[i+1][t][1][l] %= MOD; } else{ dp[i+1][t][1][l] += dp[i][j][k][l]; dp[i+1][t][1][l] %= MOD; } } else if(t==2){ if(j==1){ dp[i+1][t][k+1][min(X,l+(k+1)/2)] += dp[i][j][k][l]; dp[i+1][t][k+1][min(X,l+(k+1)/2)] %= MOD; } else if(j==2){ dp[i+1][t][0][l] += dp[i][j][k][l]; dp[i+1][t][0][l] %= MOD; } else{ dp[i+1][t][0][l] += dp[i][j][k][l]; dp[i+1][t][0][l] %= MOD; } } else{ dp[i+1][t][0][l] += dp[i][j][k][l]; dp[i+1][t][0][l] %= MOD; } } } } } } ll ret = 0; ll all = 1; rep(i,N){ if(str[i]=='?') all = (all * 10LL)%MOD; } rep(i,3){ rep(j,N){ rep(k,X){ ret = (ret + dp[N-1][i][j][k])%MOD; } } } cout << (all - ret + MOD)%MOD << endl; return 0; }
Submission Info
Submission Time | |
---|---|
Task | A - ニコニコ文字列2 |
User | phyllo |
Language | C++ (G++ 4.6.4) |
Score | 0 |
Code Size | 3855 Byte |
Status | WA |
Exec Time | 1835 ms |
Memory | 130952 KB |
Judge Result
Set Name | Sample | All | ||||||
---|---|---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 0 / 20 | ||||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | sample_01.txt, sample_02.txt |
All | subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_20.txt, subtask1_21.txt, subtask1_22.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
sample_01.txt | AC | 44 ms | 2544 KB |
sample_02.txt | AC | 39 ms | 2952 KB |
subtask1_01.txt | AC | 36 ms | 2392 KB |
subtask1_02.txt | AC | 38 ms | 2440 KB |
subtask1_03.txt | WA | 38 ms | 2540 KB |
subtask1_04.txt | AC | 39 ms | 2536 KB |
subtask1_05.txt | AC | 207 ms | 29604 KB |
subtask1_06.txt | AC | 222 ms | 28528 KB |
subtask1_07.txt | AC | 171 ms | 25584 KB |
subtask1_08.txt | AC | 149 ms | 11360 KB |
subtask1_09.txt | AC | 91 ms | 10156 KB |
subtask1_10.txt | AC | 54 ms | 5220 KB |
subtask1_11.txt | AC | 395 ms | 60396 KB |
subtask1_12.txt | AC | 1109 ms | 61544 KB |
subtask1_13.txt | AC | 432 ms | 93068 KB |
subtask1_14.txt | AC | 1150 ms | 87128 KB |
subtask1_15.txt | AC | 1054 ms | 80984 KB |
subtask1_16.txt | AC | 1082 ms | 81768 KB |
subtask1_17.txt | AC | 1835 ms | 130952 KB |
subtask1_18.txt | AC | 855 ms | 66416 KB |
subtask1_19.txt | AC | 1804 ms | 128900 KB |
subtask1_20.txt | AC | 1123 ms | 83784 KB |
subtask1_21.txt | AC | 527 ms | 130636 KB |
subtask1_22.txt | AC | 414 ms | 80900 KB |