Cod sursa(job #18659)

Utilizator alextheroTandrau Alexandru alexthero Data 18 februarie 2007 12:55:43
Problema Culori Scor 0
Compilator cpp Status done
Runda preONI 2007, Runda 2, Clasa a 10-a Marime 0.78 kb
#include <cstdio>

#define nmax 512
#define modulo 9901

int a[nmax],c[nmax][nmax];
int n;

int este(int val,int s,int f) {
    for(int i = s; i <= f; i++) 
        if(a[i] == val) return 1;
    return 0;
}

int main() {
    freopen("culori.in","r",stdin);
    freopen("culori.out","w",stdout);

    scanf("%d",&n);
    n = n * 2 - 1;
    for(int i = 1; i <= n; i ++) scanf("%d",&a[i]);

    for(int l = 0; l < n; l++) 
        for(int s = 1; s <= n; s++) {
            if((a[s] == a[s + l]) && (!este(a[s],s + 1, s + l - 1))) c[s][s + l] = 1;
            int crt = c[s][s + l];
            for(int i = s + 1; i <= s + l; i++) 
                crt += c[s][i] * c[i][s + l];
            c[s][s + l] = crt;
        }

    printf("%d\n",c[1][n]);

    return 0;
}