이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <cstdio>
#include <cstring>
const int mod = 1e9 + 7;
int n, p, q;
char sa[2005], sb[2005];
char tab[2005][6];
int dp[205][205][205];
int f(int pos, int p, int q){
if(p < 0 || q < 0) return 0;
if(pos == n) return p == 0 && q == 0;
if(~dp[pos][p][q]) return dp[pos][p][q];
int ret = 0;
for (int i=0; i<5; i++) {
if(tab[pos][i] != '.'){
ret += f(pos+1,p - (sa[pos] == tab[pos][i]),q - (sb[pos] == tab[pos][i]));
ret %= mod;
}
}
return dp[pos][p][q] = ret;
}
void what_the_fuck(){
char str[10];
memset(dp,-1,sizeof(dp));
scanf("%d %d %d",&n,&p,&q);
for (int i=0; i<n; i++) {
scanf("%s",str);
sa[i] = str[0];
}
for (int i=0; i<n; i++) {
scanf("%s",str);
sb[i] = str[0];
}
for (int i=0; i<n; i++) {
scanf("%s",tab[i]);
}
printf("%d",f(0,p,q));
}
int main(){
what_the_fuck();
puts("");
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |