Submission #1798318


Source Code Expand

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int P =1e9+7;
const int N = 410;
inline void add(int &x,int y){
	x+=y;
	if(x>=P)  x-=P;
}
int f[N][N][N],a[N],b[N],n,p1[N],p2[N],sum[N][N],g[N][N*2],h[N*2];
int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++)scanf("%d",a+i);
	for(int i =1;i<=n;i++) p1[a[i]] = i;
	for(int i =1;i<=n;i++)scanf("%d",b+i);
	for(int i =1;i<=n;i++) p2[b[i]] = i;
	f[0][0][0] =1;
	for(int i = 1;i<=n;i++) sum[0][i] = i;
	for(int i = 1;i<=n;i++){
		sum[i][0] = i;
		for(int k = 0;k<=n*2;k++) h[k] = 0;
		for(int j =1;j<=n;j++){
			sum[i][j] = sum[i-1][j]+(p2[a[i]]>j);
			for(int k = 0;k<=n;k++) add(h[sum[i-1][j-1]+k],f[i-1][j-1][k]);
			//if(j==1) for(int k =0;k<=n;k++) if(f[i-1][j-1][k]>0) {
			//	printf("YYY %d %d %d %d\n",i-1,j-1,k,f[i-1][j-1][k]);
			//}
			for(int k = 0;k<=2*n;k++) add(g[j-1][k],h[k]);
			//if(i==1 && g[0][6]>0) puts("YYY");
			if(p2[a[i]]>j && p1[b[j]]>i)
				for(int k = 1;k<=n;k++){
					add(f[i][j][k],1ll*k*g[j-1][sum[i][j]+k-3]%P);
				}
		}
	}
//	cout<<f[3][3][3]<<endl;
	int ans = 0;
	for(int i = 1;i<=n;i++) for(int j =1;j<=n;j++) for(int k = 1;k<=n;k++){
	
		if(n-k==sum[i][j]) {
			add(ans,1ll*f[i][j][k]%P);
		//	cout<<i<<' '<<j<<' '<<k<<' '<<f[i][j][k]<<endl;
		}
		
	}
	//cout<<ans<<endl;
	for(int i = 3;i<=n;i+=3) ans = 1ll*ans*(i-1)*(i-2)%P;
	printf("%d\n",ans);
	return 0;       
}
/*
9
9 2 7 3 1 6 8 4 5
1 4 7 9 2 5 8 6 3

9
4 7 2 9 6 3 5 1 8
6 5 1 8 3 7 2 9 4

9
9 7 6 8 1 2 4 3 5
1 6 7 2 4 9 5 8 3

9
1 2 3 4 5 6 7 8 9
9 8 7 6 5 4 3 2 1

6
1 2 3 4 5 6
6 5 4 3 2 1

*/

Submission Info

Submission Time
Task F - Three Gluttons
User wtw
Language C++14 (GCC 5.4.1)
Score 1800
Code Size 1636 Byte
Status AC
Exec Time 373 ms
Memory 264320 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:12:16: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d",&n);
                ^
./Main.cpp:13:38: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
  for(int i=1;i<=n;i++)scanf("%d",a+i);
                                      ^
./Main.cpp:15:39: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
  for(int i =1;i<=n;i++)scanf("%d",b+i);
                                       ^

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 1800 / 1800
Status
AC × 5
AC × 37
Set Name Test Cases
Sample 0_00.txt, 0_01.txt, 0_02.txt, 0_03.txt, 0_04.txt
All 0_00.txt, 0_01.txt, 0_02.txt, 0_03.txt, 0_04.txt, 1_00.txt, 1_01.txt, 1_02.txt, 1_03.txt, 1_04.txt, 1_05.txt, 1_06.txt, 1_07.txt, 1_08.txt, 1_09.txt, 1_10.txt, 1_11.txt, 1_12.txt, 1_13.txt, 1_14.txt, 1_15.txt, 1_16.txt, 1_17.txt, 1_18.txt, 1_19.txt, 1_20.txt, 1_21.txt, 1_22.txt, 1_23.txt, 1_24.txt, 1_25.txt, 1_26.txt, 1_27.txt, 1_28.txt, 1_29.txt, 1_30.txt, 1_31.txt
Case Name Status Exec Time Memory
0_00.txt AC 2 ms 2304 KB
0_01.txt AC 1 ms 256 KB
0_02.txt AC 2 ms 4352 KB
0_03.txt AC 2 ms 4352 KB
0_04.txt AC 2 ms 2304 KB
1_00.txt AC 204 ms 2176 KB
1_01.txt AC 269 ms 90240 KB
1_02.txt AC 269 ms 90240 KB
1_03.txt AC 293 ms 133248 KB
1_04.txt AC 294 ms 135296 KB
1_05.txt AC 301 ms 178304 KB
1_06.txt AC 300 ms 178304 KB
1_07.txt AC 373 ms 264320 KB
1_08.txt AC 333 ms 262272 KB
1_09.txt AC 334 ms 262272 KB
1_10.txt AC 330 ms 260224 KB
1_11.txt AC 333 ms 260224 KB
1_12.txt AC 318 ms 254080 KB
1_13.txt AC 339 ms 262272 KB
1_14.txt AC 337 ms 262272 KB
1_15.txt AC 342 ms 264320 KB
1_16.txt AC 316 ms 264320 KB
1_17.txt AC 315 ms 264320 KB
1_18.txt AC 308 ms 262272 KB
1_19.txt AC 309 ms 262272 KB
1_20.txt AC 303 ms 260224 KB
1_21.txt AC 316 ms 264320 KB
1_22.txt AC 315 ms 264320 KB
1_23.txt AC 314 ms 264320 KB
1_24.txt AC 350 ms 262272 KB
1_25.txt AC 356 ms 264320 KB
1_26.txt AC 337 ms 258176 KB
1_27.txt AC 352 ms 262272 KB
1_28.txt AC 350 ms 262272 KB
1_29.txt AC 356 ms 264320 KB
1_30.txt AC 343 ms 260224 KB
1_31.txt AC 336 ms 258176 KB