Pagini recente » Cod sursa (job #612898) | Cod sursa (job #3129693) | Cod sursa (job #3129705) | Cod sursa (job #2133497) | Cod sursa (job #611675)
Cod sursa(job #611675)
#include<stdio.h>
#include<string>
#define maxDim1 505
#define maxDim2 105
#define MOD 666013
FILE*f=fopen("pedefe.in","r");
FILE*g=fopen("pedefe.out","w");
int n,m,p,i,j,ii,jj,k,rez;
int S1[maxDim1],S2[maxDim1],S3[maxDim2],A1[maxDim1][maxDim1],A2[maxDim1][maxDim1];
int main () {
fscanf(f,"%d %d %d",&n,&m,&p);
for ( i = 1 ; i <= n ; ++i )
fscanf(f,"%d",&S1[i]);
for ( i = 1 ; i <= m ; ++i ){
fscanf(f,"%d",&S2[i]);
}
for ( i = 1 ; i <= p ; ++i ){
fscanf(f,"%d",&S3[i]);
}
for ( i = 1 ; i <= n ; ++i ){
for ( j = 1 ; j <= m ; ++j ){
if ( S1[i] == S2[j] ){
A1[i][j] = 1;
for ( ii = 1 ; ii < i ; ++ii ){
for ( jj = 1 ; jj < j ; ++jj ){
if ( S1[ii] <= S1[i] && S2[jj] <= S1[i] ){
A1[i][j] += A1[ii][jj];
if ( A1[i][j] >= MOD ) A1[i][j] -= MOD;
}
}
}
}
}
}
for ( k = 1 ; k <= p ; ++k ){
for ( i = 1 ; i <= n ; ++i ){
for ( j = 1 ; j <= m ; ++j ){
if ( S1[i] == S2[j] ){
if ( S1[i] == S3[k] ){
if ( k == 1 ) A2[i][j] = 1;
for ( ii = 1 ; ii < i ; ++ii ){
for ( jj = 1 ; jj < j ; ++jj ){
if ( S1[ii] <= S1[i] && S2[jj] <= S1[i] ){
A2[i][j] += A1[ii][jj];
if ( A2[i][j] >= MOD ) A2[i][j] -= MOD;
}
}
}
}
else{
for ( ii = 1 ; ii < i ; ++ii ){
for ( jj = 1 ; jj < j ; ++jj ){
if ( S1[ii] <= S1[i] && S2[jj] <= S1[i] ){
A2[i][j] += A2[ii][jj];
if ( A2[i][j] >= MOD ) A2[i][j] -= MOD;
}
}
}
}
}
}
}
memcpy(A1,A2,sizeof(A2));
memset(A2,0,sizeof(A2));
}
for ( i = 1 ; i <= n ; ++i ){
for ( j = 1 ; j <= m ; ++j ){
rez += A1[i][j];
if ( rez >= MOD ) rez -= MOD;
}
}
fprintf(g,"%d\n",rez);
fclose(f);
fclose(g);
return 0;
}