(I2
I118
I6
(dp0
Vtable.%l
p1
(Vtable2.cpp
p2
S'#include <cstdio>\r\n#include <algorithm>\r\n#include <vector>\r\nusing namespace std;\r\n\r\nint state1[76], state2[76], state11[76], state22[76];\r\nint n, ka, kb, a[36], b[36];\r\n\r\nvector<int> line1;\r\nvector<int> line2;\r\n\r\nstring bin;\r\nvoid binary(int a)\r\n{\r\n    while(a)\r\n    {\r\n        bin += ( a%2 + \'0\');\r\n        a/=2;\r\n    }\r\n    reverse(bin.begin(), bin.end());\r\n}\r\n\r\nint main(){\r\n    \r\n    scanf("%d", &n);\r\n    scanf("%d", &ka);\r\n    for(int i = 0;  i < ka; i ++)\r\n    {\r\n        scanf("%d", &a[i]);\r\n        state1[a[i]] = 2;\r\n        state2[a[i]] = -1;\r\n    }\r\n    scanf("%d", &kb);\r\n    for(int i = 0;  i < kb; i ++)\r\n    {\r\n        scanf("%d", &b[i]);\r\n        state2[b[i]] = 2;\r\n        state1[b[i]] = -1;\r\n    }\r\n    \r\n    int p = 1, start = 1;\r\n    for(int i = 1; i < (2*n - ka - kb); i ++)\r\n    {\r\n        p *= 2;\r\n        start += p;\r\n    }\r\n    \r\n    for(int i = 1; i <= 2*n; i ++) state11[i] = state1[i];\r\n    for(int i = 1; i <= 2*n; i ++) state22[i] = state2[i];\r\n    \r\n    long long int ans = 0;\r\n    \r\n    for(int temp = start; temp >= 0; temp --)\r\n    {\r\n        binary(temp); \r\n        \r\n        while(bin.size() < (2*n - ka - kb)) bin = \'0\' + bin;\r\n        \r\n        int write;\r\n        for(int i = 1; i <= 2*n; i ++)\r\n            if(state11[i] == 0) {write = i; break;}\r\n        \r\n        for(int i = 0; i < bin.size(); i++)\r\n        {\r\n            if(bin[i] == \'0\') state22[write] = 1;\r\n            else state11[write] = 1;\r\n            \r\n            for(int i = write+1; i <= 2*n; i ++)\r\n                if(state11[i] == 0) {write = i; break;}\r\n        }\r\n        for(int i = 1; i <= 2*n; i ++)\r\n            if(state11[i] > 0) line1.push_back(i);\r\n        for(int i = 1; i <= 2*n; i ++)\r\n            if(state22[i] > 0) line2.push_back(i);\r\n            \r\n        if(line1.size() == line2.size())\r\n        {\r\n            bool check = true;\r\n            for(int i = 0; i < line1.size(); i ++)\r\n                if(line1[i] > line2[i]) {check = false; break;}\r\n            if(check == true)\r\n            {\r\n                /*cout << "----------------------------" << endl;\r\n                for(int i = 0; i < line1.size(); i++)\r\n                    cout << line1[i] << " ";\r\n                cout << endl;\r\n                for(int i = 0; i < line2.size(); i++)\r\n                    cout << line2[i] << " ";\r\n                cout << endl;*/\r\n                \r\n                ans ++;\r\n            }\r\n        }\r\n        \r\n        for(int i = 1; i <= 2*n; i ++) state11[i] = state1[i];\r\n        for(int i = 1; i <= 2*n; i ++) state22[i] = state2[i];\r\n        bin.clear(); line1.clear(); line2.clear();\r\n    }\r\n    \r\n    printf("%lld\\n", ans);\r\n    \r\nreturn 0;\r\n}'
p3
tp4
stp5
.