Submission #200059

#TimeUsernameProblemLanguageResultExecution timeMemory
200059guangxuanFishing Game (RMI19_fishing)C++14
100 / 100
388 ms107256 KiB
#include <bits/stdc++.h> const long long MOD=1e9+7; using namespace std; int mm[301][301][301]; int dp(int x,int y,int z){ // ab,bc,ca if(mm[x][y][z]!=-1)return mm[x][y][z]; if(x==0&&y==0&&z==0)return mm[x][y][z]=1; mm[x][y][z]=0; //printf("STATE %d %d %d\n",x,y,z); for(int xk=0;xk<2;xk++){ int x2=x,y2=y,z2=z,mult=1; if(x2+z2!=0){ if(xk){ mult*=x2; x2--; } else{ mult*=z2; z2--,y2++; } } else if(xk)continue;//do nothing! if(x2<0||y2<0||z2<0)continue; for(int yk=0;yk<2;yk++){ int x3=x2,y3=y2,z3=z2,mult2=mult; if(x3+y3!=0){ if(yk){ mult2*=y3; y3--; } else{ mult2*=x3; x3--,z3++; } } else if(yk)continue;//do nothing! if(x3<0||y3<0||z3<0)continue; for(int zk=0;zk<2;zk++){ int x4=x3,y4=y3,z4=z3,mult3=mult2; if(y4+z4!=0){ if(zk){ mult3*=z4; z4--; } else{ mult3*=y4; y4--,x4++; } } else if(zk)continue;//do nothing! if(x4<0||y4<0||z4<0)continue; if((xk||yk||zk)==0)continue; //printf("TRANS %d %d %d %lld\n",x4,y4,z4,mult); mm[x][y][z]=((long long)mm[x][y][z]+(long long)dp(x4,y4,z4)*mult3)%MOD; } } } return mm[x][y][z]; } int hascard[3][300]; int main(){ int n,t; scanf("%d%d",&n,&t); while(t--){ memset(mm,-1,sizeof mm); memset(hascard,0,sizeof hascard); int x=0,y=0,z=0; for(int p=0;p<3;p++){ for(int i=0;i<n*2;i++){ int card; scanf("%d",&card); card--; hascard[p][card]=1; } } for(int i=0;i<3*n;i++){ x+=hascard[0][i]&&hascard[1][i]; y+=hascard[1][i]&&hascard[2][i]; z+=hascard[2][i]&&hascard[0][i]; } printf("%d\n",dp(x,y,z)); } }

Compilation message (stderr)

fishing.cpp: In function 'int main()':
fishing.cpp:67:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d%d",&n,&t);
  ~~~~~^~~~~~~~~~~~~~
fishing.cpp:75:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d",&card);
     ~~~~~^~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...