Pagini recente » Cod sursa (job #1972406) | Cod sursa (job #3171417) | Cod sursa (job #1653412) | Cod sursa (job #2141208) | Cod sursa (job #60650)
Cod sursa(job #60650)
#include <stdio.h>
#define NMAX 222
#define mod(a) (((a)>=666013) ? ((a)-666013):(a))
int A[NMAX][NMAX][NMAX], S1[NMAX], S2[NMAX], S3[NMAX], N, M, P;
int main()
{
int i, j, k, a, u, t, sol=0;
freopen("pedefe.in", "r", stdin);
scanf("%d %d %d", &N, &M, &P);
for (i = 1; i <= N; i++) scanf("%d", S1+i);
for (i = 1; i <= M; i++) scanf("%d", S2+i);
for (i = 1; i <= P; i++) scanf("%d", S3+i);
for (i = 1; i <= N; i++)
for (j = 1; j <= M; j++)
if (S1[i] == S2[j])
{
A[i][j][0] = 1;
for (k = 1; k <= P; k++)
if (S1[i] == S3[k]) A[i][j][k] = 1;
}
for (i = 1; i <= N; i++)
for (j = 1; j <= M; j++)
if (S1[i] == S2[j])
for (k = 1, a = 0; k <= P; k++)
{
if (S1[i] == S3[k])
for (t = 1; t <= i; t++)
for (u = 1; u <= j; u++)
if (S1[t] <= S1[i]) a = mod(a+A[t][u][k-1]);
else
for (t = 1; t <= i; t++)
for (u = 1; u <= j; u++)
if (S1[t] <= S1[i]) a = mod(a+A[t][u][k]);
A[i][j][k] = mod(A[i][j][k]+a);
sol = mod(sol+A[i][j][k]);
}
freopen("pedefe.out", "w", stdout);
printf("%d\n", sol);
return 0;
}