Pagini recente » Cod sursa (job #2714758) | Cod sursa (job #1434172) | Cod sursa (job #1439837) | Cod sursa (job #193394) | Cod sursa (job #1299349)
#include <cstdio>
FILE* in=fopen("munte.in","r");
FILE* out=fopen("munte.out","w");
const int X_ACT=107,H_MAX=57,H_ACT=57,K_ACT=57,INF=2000000000;
unsigned long long v[2][X_ACT][H_ACT][K_ACT];
int n,d,k;
int t[57];
int main()
{
fscanf(in,"%d%d%d",&n,&d,&k);
for(int i=1; i<=k; i++)
{
fscanf(in,"%d",&t[i]);
}
t[0]=INF;
v[0][0][0][0]=1;
for(int x=1; x<d; x++)
{
for(int h=1; h<=n; h++)
{
for(int p=0; p<=k; p++)
{
if(h==t[p])
{
if(h==n)
{
v[1][x][h][p]+=v[0][x-1][h-1][p-1]+v[0][x-1][h][p-1]+v[0][x-1][h+1][p-1];
v[1][x][h][p]+=v[1][x-1][h-1][p-1]+v[1][x-1][h][p-1]+v[1][x-1][h+1][p-1];
}
else
{
v[0][x][h][p]+=v[0][x-1][h-1][p-1]+v[0][x-1][h][p-1]+v[0][x-1][h+1][p-1];
v[1][x][h][p]+=v[1][x-1][h-1][p-1]+v[1][x-1][h][p-1]+v[1][x-1][h+1][p-1];
}
}
else
{
if(h==n)
{
v[1][x][h][p]+=v[0][x-1][h-1][p]+v[0][x-1][h][p]+v[0][x-1][h+1][p];
v[1][x][h][p]+=v[1][x-1][h-1][p]+v[1][x-1][h][p]+v[1][x-1][h+1][p];
}
else
{
v[0][x][h][p]+=v[0][x-1][h-1][p]+v[0][x-1][h][p]+v[0][x-1][h+1][p];
v[1][x][h][p]+=v[1][x-1][h-1][p]+v[1][x-1][h][p]+v[1][x-1][h+1][p];
}
}
}
}
}
fprintf(out,"%lld",v[1][d-1][1][k]);
return 0;
}