Submission #3896

#TimeUsernameProblemLanguageResultExecution timeMemory
3896imsifileHexagon travel (kriii1_H)C++98
0 / 1
0 ms32768 KiB
#include<stdio.h> #include<memory.h> #define md 1000000007 typedef long long ll; int l, r, m, ty; ll cmb[2222][2222], dy[2][2222][6], t; // loop type : 0=RGB, 1=RBG, 2=GBR, 3=GRB, 4=BRG, 5=BGR int main(){ int i, j, k, x; scanf("%d%d%d", &l, &r, &m); for(i=0; i<=l; i++){ for(j=0; j<=r; j++){ if(!i || !j)cmb[i][j]=1; else{ cmb[i][j]=cmb[i-1][j]+cmb[i][j-1]; if(cmb[i][j]>=md)cmb[i][j]-=md; } } } dy[ty][m][4]=1; for(i=l+r+m; i>0; i--){ memset(dy[1-ty],0,sizeof(dy[1-ty])); for(j=m; j>=0; j--){ if(i<j)continue; for(k=0; k<6; k++){ if(i-j>0){ dy[1-ty][j][k^1]+=dy[ty][j][k]; if(dy[1-ty][j][k^1]>=md)dy[1-ty][j][k^1]-=md; } if(j>0){ if(k%2)x=(k+4)%6; else x=(k+2)%6; dy[1-ty][j-1][x]+=dy[ty][j][k]; if(dy[1-ty][j-1][x]>=md)dy[1-ty][j-1][x]-=md; } } } ty=1-ty; } for(i=0; i<3; i++)printf("%lld\n", cmb[l][r]*(dy[ty][0][2*i]+dy[ty][0][2*i+1])%md); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...