Cod sursa(job #1983534)

Utilizator caesar2001Stoica Alexandru caesar2001 Data 22 mai 2017 12:08:09
Problema Lista lui Andrei Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include <cstdio>

using namespace std;

FILE *in,*out;

const int modulo = 4001;

long long dp[1001][10];

int main()
{
    in = fopen("div3.in","r");
    out = fopen("div3.out","w");
    int n,l;
    fscanf(in,"%d %d",&n,&l);
    for(int i = 1;i <= n;i ++)
    {
        int x;
        fscanf(in,"%d",&x);
        dp[1][x % 3]++;
    }
    for(int i = 1;i <= l;i ++)
    {
        for(int j = 0;j <= 2;j ++)
        {
            for(int k = 0;k <= 2;k ++) {
                dp[i][j] += (dp[i-1][(3+j-k)%3] * dp[1][k])%modulo;
                dp[i][j] %= modulo;
            }
        }
    }
    fprintf(out,"%lld",dp[l][0]);
    return 0;
}