Cod sursa(job #839077)

Utilizator stoicatheoFlirk Navok stoicatheo Data 21 decembrie 2012 11:55:14
Problema Culori Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include<stdio.h>
 
#define maxn 257
#define mod 9901
 
FILE*f=fopen("culori.in","r");
FILE*g=fopen("culori.out","w");
 
int n,i,j,k,l;
int v[maxn<<1],D[maxn<<1][maxn<<1];
 
int main () {
     
    fscanf(f,"%d",&n);
    for ( i = 1 ; i <= n + n - 1 ; ++i ){
        fscanf(f,"%d",&v[i]);
    }
     
    int N = n+n-1;
    for ( i = 1 ; i <= N ; ++i ){
        D[i][i] = 1;
    }
     
    for ( l = 3 ; l <= N ; l += 2 ){
        for ( i = 1 ; i + l - 1 <= N ; ++i ){
            j = i + l - 1;
            if ( v[i] == v[j] ){
                for ( k = i + 1 ; k < j ; ++k ){
                    D[i][j] = (D[i][j] + D[i+1][k] * D[k+1][j]) % mod;
                }
            }
        }
    }
     
    fprintf(g,"%d\n",D[1][N]);
     
    fclose(f);
    fclose(g);
     
    return 0;
}