Pagini recente » Cod sursa (job #1810071) | Cod sursa (job #1689813) | Cod sursa (job #1572669) | Cod sursa (job #201178) | Cod sursa (job #783985)
Cod sursa(job #783985)
#include <fstream>
#define DIM 110
#define MOD 666013
using namespace std;
int A[5*DIM], B[5*DIM], C[DIM];
int X[5*DIM][5*DIM], Y[5*DIM][5*DIM];
int N, M, K, i, j, k, ii, jj, sol;
int main() {
ifstream f("pedefe.in");
ofstream g("pedefe.out");
f>>N>>M>>K;
for (i=1;i<=N;i++)
f>>A[i];
for (i=1;i<=M;i++)
f>>B[i];
for (i=1;i<=K;i++)
f>>C[i];
X[0][0] = 1;
for (i=1;i<=N;i++)
for (j=1;j<=M;j++)
if (A[i] == B[j])
for (ii=0;ii<i;ii++)
if (A[ii]<=A[i])
for (jj=0;jj<j;jj++) {
X[i][j] += X[ii][jj];
if(X[i][j] >= MOD)
X[i][j] -= MOD;
}
for (k=1;k<=K;k++) {
for (i=1;i<=N;i++)
for (j=1;j<=M;j++)
if (A[i] == B[j] && A[i] == C[k]) {
for (ii = 0; ii<i;ii++)
if (A[ii] <= A[i])
for (jj=0;jj<j;jj++) {
Y[i][j] += X[ii][jj];
if (Y[i][j] >= MOD)
Y[i][j] -= MOD;
}
} else
if (A[i] == B[j])
//S[k-1][i][j] = 0;
for (ii = 0; ii<i;ii++)
if (A[ii] <= A[i])
for (jj=0;jj<j;jj++) {
Y[i][j] += Y[ii][jj];
if (Y[i][j] >= MOD)
Y[i][j] -= MOD;
}
memcpy(X, Y, sizeof(X));
memset(Y, 0, sizeof(Y));
}
for (i=1;i<=N;i++)
for (j=1;j<=M;j++) {
sol += X[i][j];
if (sol >= MOD)
sol -= MOD;
}
g<<sol<<"\n";
return 0;
}