Pagini recente » Cod sursa (job #2285101) | Cod sursa (job #1313781) | Cod sursa (job #1400674) | Cod sursa (job #1439981) | Cod sursa (job #2618998)
#include <bits/stdc++.h>
#define maxn 505
#define mod 666013
std::ifstream fin ("pedefe.in");
std::ofstream fout ("pedefe.out");
int x1[maxn];
int x2[maxn];
int x3[maxn];
int dp[maxn][maxn][maxn];
int main(){
int n1, n2, n3, i, j ,k, ii, jj, kk;
fin >> n1 >> n2 >> n3;
for (i=1; i<=n1; i++)
fin >> x1[i];
for (i=1; i<=n2; i++)
fin >> x2[i];
for (i=1; i<=n3; i++)
fin >> x3[i];
dp[0][0][0] = 1;
for (k=0; k<=n3; k++){
for (i=1; i<=n1; i++){
for (j=1; j<=n2; j++){
if (x1[i] == x2[j] and x2[j] == x3[k] and k){
for (ii=0; ii<i; ii++){
for (jj=0; jj<j; jj++){
if (x1[ii] <= x1[i]){
dp[k][i][j] += dp[k-1][ii][jj];
if (dp[k][i][j] >= mod)
dp[k][i][j] -= mod;
}
}
}
}
if (x1[i] == x2[j] and x1[i] != x3[k]){
for (ii=0; ii<i; ii++){
for (jj=0; jj<j; jj++){
if (x1[ii] <= x1[i]){
dp[k][i][j] += dp[k][ii][jj];
if (dp[k][i][j] >= mod)
dp[k][i][j] -= mod;
}
}
}
}
}
}
}
/*
for (k=1; k<=n3; k++){
for (i=1; i<=n1; i++, fout << '\n')
for (j=1; j<=n2; j++)
fout << dp[k][i][j] << ' ';
fout << "**********\n";
}
*/
int max = 0;
for (i=1; i<=n1; i++)
for (j=1; j<=n2; j++)
max = std::max (max, dp[n3][i][j]);
fout << max % mod << '\n';
return 0;
}