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
2017-11-22 22:50:48+0900
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
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