Pagini recente » Cod sursa (job #2129908) | Arhiva Educationala | Cod sursa (job #916709) | Cod sursa (job #2605407) | Cod sursa (job #1750423)
#include <iostream>
#include <cstdio>
using namespace std;
const int nmax = 105;
const int pmax = 105;
const int mod = 666013;
int a[nmax], b[nmax], c[nmax];
int dp[nmax][nmax][pmax];
int n, m, p;
void update(int &x, int y){
x += y;
x %= mod;
}
int main() {
freopen("pedefe.in", "r", stdin);
freopen("pedefe.out", "w", stdout);
cin >> n >> m >> p;
for(int i=1; i<=n; ++i){
cin >> a[i];
}
for(int j=1; j<=m; ++j){
cin >> b[j];
}
for(int i=1; i<=p; ++i){
cin >> c[i];
}
dp[0][0][0] = 1;
for(int i=1; i<=n; ++i){
for(int j=1; j<=m; ++j){
if (a[i] != b[j]){
continue;
}
for(int k=0; k<=p; ++k){
if (k == 0 || a[i] != c[k]){
for(int i2=0; i2<i; ++i2){
for(int j2=0; j2<j; ++j2){
if (a[i2] == b[j2] && a[i2] <= a[i]){
update(dp[i][j][k], dp[i2][j2][k]);
}
}
}
}else{
for(int i2=0; i2<i; ++i2){
for(int j2=0; j2<j; ++j2){
if (a[i2] == b[j2] && a[i2] <= a[i]){
update(dp[i][j][k], dp[i2][j2][k-1]);
}
}
}
}
}
}
}
int ans = 0;
for(int i=1; i<=n; ++i){
for(int j=1; j<=m; ++j){
update(ans, dp[i][j][p]);
}
}
cout << ans << "\n";
return 0;
}