Cod sursa(job #1004188)

Utilizator sorin_olimpicoolSorin Olimpicu sorin_olimpicool Data 2 octombrie 2013 11:40:57
Problema Plantatie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.56 kb
#include<stdio.h>
#include<string.h>

bool nepotrivire[30][30];
int contor_par[30];
int contor_impar[30];
 
int main()
{
    int n,i,j,m,litere;
    char ch1,ch2;
    litere = 26;
    int   sum = 0;
 
    freopen("nrcuv.in","r",stdin);
    freopen("nrcuv.out","w",stdout);
 
    scanf("%d%d\n",&n,&m);
   
    while(m--)
    {
        scanf("%c %c\n",&ch1,&ch2);
        nepotrivire[ch1-'a'][ch2-'a'] = true;
        nepotrivire[ch2-'a'][ch1-'a'] = true;
    }
   
    
     for (int i = 0; i < litere; i++) {
            contor_impar[i] = 1;
        }

        for (int k = 1; k <= n; k++) {
            if (k % 2 == 0) {
                if (k > 0) {                  
                   //  memcpy(contor_par,contor_impar,sizeof(contor_par));
                }
                for (int i = 0; i < litere; i++) {                   
                    contor_impar[i] = 0;
                }
                for (int i = 0; i < litere; i++) {
                    for (int j = 0; j < litere; j++) {
                        if (!nepotrivire[i][j]) {                  
                           
                      
                            contor_impar[j] = contor_impar[j] + contor_par[i];                            
                            contor_impar[j] = contor_impar[j] % 104659;                            
                        }
                    }
                }
               
            } else {
                if (k > 1) {
                   //   memcpy(contor_impar,contor_par,sizeof(contor_impar));
                }
                for (int i = 0; i < litere; i++) {                  
                    contor_par[i] = 0;
                }
                for (int i = 0; i < litere; i++) {
                    for (int j = 0; j < litere; j++) {
                        if (!nepotrivire[i][j]) {                          
                            contor_par[j] = contor_par[j] + contor_impar[i];                           
                            contor_par[j] = contor_par[j] % 104659;
                        }
                    }
                }               
            }
        }

        if (n % 2 == 0) {
            for (int i = 0; i < litere; i++) {
                sum = (sum + contor_impar[i])% 104659;
                sum = sum % 104659;
            }
        } else {
            for (int i = 0; i < litere; i++) {
                sum = (sum + contor_par[i]) % 104659;
                sum = sum % 104659;
            }
        }
       

    printf("%d",sum);
    return 0;
}