Cod sursa(job #60651)

Utilizator fireatmyselfBogdan-Alexandru Stoica fireatmyself Data 15 mai 2007 20:36:24
Problema Pedefe Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 1.54 kb
#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++)
                   {
                       a = 0;
                       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]);
                          a = mod(a+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);
                   }
                   sol = mod(A[i][j][P]+sol);
                }
                   
        freopen("pedefe.out", "w", stdout);
        printf("%d\n", sol);

        return 0;
        
}