| # | Time | Username | Problem | Language | Result | Execution time | Memory | 
|---|---|---|---|---|---|---|---|
| 200059 | guangxuan | Fishing Game (RMI19_fishing) | C++14 | 388 ms | 107256 KiB | 
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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)
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
