(I2
I157
I6
(dp0
Vtable.%l
p1
(Vmain.cpp
p2
S'#include<cstdio>\r\n#include<algorithm>\r\nusing namespace std;\r\nint n,A,i,B,C,i1,i2,i3,k1,k2,j,ras,a[100],b[100],c[100],ap[100],a2[40][2];\r\nvoid bck(int i,int c1,int a1,int b1,long long config)\r\n{\r\n    if(i==n)\r\n    {\r\n        ras++;\r\n        return ;\r\n    }\r\n    for(int j=c1;j<=C;j++)\r\n    {\r\n        if( (config&(1<<j))==0 )\r\n        {\r\n            if(a[a1]>c[j]&&b[b1]>c[j])\r\n            {\r\n                if(b1<=B&&j<=C&&a2[i][1]<c[j]&&a2[i][2]<b[b1])\r\n                {\r\n                    a2[i+1][1]=c[j];\r\n                    a2[i+1][2]=b[b1];\r\n                    if(j==c1)c1++;\r\n                    bck(i+1,c1,a1,b1+1,config|(1<<j));\r\n                    a2[i+1][1]=0;\r\n                    a2[i+1][2]=0;\r\n                    if(j==c1-1)c1--;\r\n                }\r\n                if(j<=C-1)\r\n                {\r\n                    if(a2[i][1]<c[j])\r\n                        for(int o=j+1;o<=C;o++)\r\n                            if((config&(1<<o))==0&&a2[i][2]<c[o])\r\n                            {\r\n                                if(j==c1)c1++;\r\n                                a2[i+1][1]=c[j];\r\n                                a2[i+1][2]=c[o];\r\n                                bck(i+1,c1,a1,b1,( ( config | (1<<o) ) | (1<<j) ));\r\n                                a2[i+1][1]=0;\r\n                                a2[i+1][2]=0;\r\n                                if(j==c1-1)c1--;\r\n                            }\r\n                }\r\n            }\r\n            if(a[a1]<c[j]&&c[j]<b[b1])\r\n            {\r\n                if(a1<=A&&j<=C&&a2[i][1]<a[a1]&&a2[i][2]<c[j]&&a2[i][1]<a[a1])\r\n                {\r\n                    a2[i+1][1]=a[a1];\r\n                    a2[i+1][2]=c[j];\r\n                    if(j==c1)c1++;\r\n                    bck(i+1,c1,a1+1,b1,config|(1<<j));\r\n                    a2[i+1][1]=0;\r\n                    a2[i+1][2]=0;\r\n                    if(j==c1-1)c1--;\r\n                }\r\n                /*if(a[a1]<b[b1]&&a1<=A&&b1<=B&&a2[i][2]<b[b1]&&a2[i][1]<a[a1])\r\n                {\r\n                    a2[i+1][1]=a[a1];\r\n                    a2[i+1][2]=b[b1];\r\n                    bck(i+1,j,a1+1,b1+1,config);\r\n                    a2[i+1][1]=0;\r\n                    a2[i+1][2]=0;\r\n                }*/\r\n            }\r\n            if(a[a1]<c[j]&&c[j]>b[b1])break;\r\n        }\r\n    }\r\n    if(a[a1]<b[b1]&&a1<=A&&b1<=B&&a2[i][2]<b[b1]&&a2[i][1]<a[a1])\r\n    {\r\n        a2[i+1][1]=a[a1];\r\n        a2[i+1][2]=b[b1];\r\n        bck(i+1,c1,a1+1,b1+1,config);\r\n        a2[i+1][1]=0;\r\n        a2[i+1][2]=0;\r\n    }\r\n}\r\nint main()\r\n{\r\n    //freopen ("input", "r", stdin);\r\n    //freopen ("output", "w", stdout);\r\n    scanf("%d",&n);\r\n    scanf("%d",&A);\r\n    for (i=1;i<=A;i++)\r\n    {\r\n        scanf("%d",&a[i]);\r\n        ap[a[i]]=1;\r\n    }\r\n    sort(a+1,a+A+1);\r\n    a[A+1]=100000;\r\n    scanf("%d",&B);\r\n    for (i=1;i<=B;i++)\r\n    {\r\n        scanf("%d",&b[i]);\r\n        ap[b[i]]=1;\r\n    }\r\n    sort(b+1,b+B+1);\r\n    b[B+1]=100000;\r\n    for (i=1;i<=2*n;i++)\r\n    {\r\n        if(ap[i]==0)\r\n        {\r\n            C++;\r\n            c[C]=i;\r\n        }\r\n        ap[i]=0;\r\n    }\r\n    c[C+1]=100000;\r\n    bck(0,1,1,1,0);\r\n    printf("%d",ras);\r\n    /*\r\n    k1=n-A;\r\n    k2=n-B;\r\n    i1=1;\r\n    i2=1;\r\n    if(b[1]==1||a[A]==2*n)\r\n    {\r\n        printf("0");\r\n        return 0;\r\n    }\r\n    dp[1][1][1]=1;\r\n    if(c[1]==1)i2=2;\r\n    for(i=2;i<=n;i++)\r\n    {\r\n        while(c[i2]<a[i1]&&i1<=A)i2++;\r\n        if(i1==A)i2++;\r\n        i3=i2-1;\r\n        while(c[i3]>a[i1-1]&&c[i3]<a[i1]&&i3<i2+k1)\r\n        {\r\n            dp[1][i][c[i3]]=1;\r\n            for(j=1;j<c[i3];j++)\r\n                dp[1][i][c[i3]]+=dp[1][i-1][j];\r\n            i3++;\r\n        }\r\n        if(i1<=A&&a[i1]/2+a[i1]%2<=i)\r\n        {\r\n            dp[1][i][a[i1]]=1;\r\n            for(j=1;j<a[i1];j++)\r\n                dp[1][i][a[i1]]+=dp[1][i-1][j];\r\n            i1++;\r\n        }\r\n        else k1--;\r\n    }\r\n    for(i=1;i<=n;i++&&printf("\\n"))\r\n        for(j=1;j<=2*n;j++)\r\n            printf("%d ",dp[1][i][j]);*/\r\n    return 0;\r\n}\r\n'
p3
tp4
stp5
.