(I2
I140
I6
(dp0
Vtable.%l
p1
(Vtable.cpp
p2
S'#include<iostream>\r\n#include<vector>\r\n#include<algorithm>\r\nusing namespace std;\r\nvector<int> a,b,c;\r\nint n;\r\nint table[2][36];\r\nlong long ways=0;\r\nvector<vector<int> > firstRow;\r\nvoid printTable()\r\n{\r\n    for(int i = 0;i < n;i++)\r\n        cout<<table[0][i]<<" ";\r\n    cout<<endl;\r\n    for(int i = 0;i < n;i++)\r\n        cout<<table[1][i]<<" ";\r\n}\r\nbool isRight()\r\n{\r\n    //printTable();\r\n    //cout<<endl<<endl;\r\n    vector<int> temp;\r\n    temp.push_back(table[0][0]);\r\n    if(table[0][0] > table[1][0])\r\n        return false;\r\n    for(int i = 1;i < n;i++)\r\n    {\r\n        if(table[0][i-1] > table[0][i] || table[1][i-1] > table[1][i] || table[0][i] > table[1][i])\r\n        {\r\n            return false;\r\n        }\r\n        temp.push_back(table[0][i]);\r\n    }\r\n    bool bBreak = true;\r\n    if(firstRow.size() == 0)\r\n        bBreak = false;\r\n    for(int i = 0;i < firstRow.size();i++)\r\n    {\r\n        bBreak = true;\r\n        for(int j = 0;j < firstRow[i].size();j++)\r\n            if(firstRow[i][j] != temp[j])\r\n            {\r\n                bBreak = false;\r\n                break;\r\n            }\r\n        if(bBreak)\r\n            break;\r\n    }\r\n    if(bBreak)\r\n        return false;\r\n    firstRow.push_back(temp);\r\n    return true;\r\n}\r\nvoid insertSortedElement(int row, int number)\r\n{\r\n    for(int i = 0;i < n;i++)\r\n    {\r\n        if(table[row][i] == 0)\r\n        {\r\n            table[row][i] = number;\r\n            break;\r\n        }\r\n    }\r\n    sort(table[row],table[row] + n);\r\n}\r\nvoid resetRow(int row)\r\n{\r\n    for(int i = 0;i < n;i++)\r\n    {\r\n        bool clearCell = false;\r\n        for(int j = 0;j < c.size();j++)\r\n            if(table[row][i] == c[j])\r\n            {\r\n                clearCell = true;\r\n                break;\r\n            }\r\n        if(clearCell)\r\n            table[row][i] = 0;\r\n    }\r\n}\r\nint main()\r\n{\r\n    cin>>n;\r\n    int temp,temp1;\r\n    vector<int> both;\r\n    cin>>temp;\r\n    for(int i = 0;i < temp;i++)\r\n    {\r\n        cin>>temp1;\r\n        a.push_back(temp1);\r\n        both.push_back(temp1);\r\n    }\r\n    cin>>temp;\r\n    for(int i = 0;i < temp;i++)\r\n    {\r\n        cin>>temp1;\r\n        b.push_back(temp1);\r\n        both.push_back(temp1);\r\n    }\r\n    for(int i = 1;i <= 2*n;i++)\r\n    {\r\n        bool place = true;\r\n        for(int j = 0;j < both.size();j++)\r\n            if(i == both[j])\r\n            {\r\n                place = false;\r\n                break;\r\n            }\r\n        if(place)\r\n            c.push_back(i);\r\n    }\r\n    for(int i = 0;i <= n;i++)\r\n    {\r\n        table[1][i] = 0;\r\n        table[2][i] = 0;\r\n    }\r\n    for(int i = 0;i < a.size();i++)\r\n        insertSortedElement(0,a[i]);\r\n    for(int i = 0;i < b.size();i++)\r\n        insertSortedElement(1,b[i]);\r\n    vector<int> used;\r\n    do\r\n    {\r\n        for(int i = 0;i < n-a.size();i++)\r\n        {\r\n            insertSortedElement(0,c[i]);\r\n            used.push_back(c[i]);\r\n        }\r\n        for(int i = 0;i < c.size();i++)\r\n        {\r\n            bool add = true;\r\n            for(int j = 0;j < used.size();j++)\r\n            {\r\n                if(used[j] == c[i])\r\n                {\r\n                    add = false;\r\n                    break;\r\n                }\r\n            }\r\n            if(add)\r\n                insertSortedElement(1,c[i]);\r\n        }\r\n        if(isRight())\r\n            ways++;\r\n        resetRow(0);\r\n        resetRow(1);\r\n        used.clear();\r\n    }while(next_permutation(c.begin(),c.end()));\r\n    cout<<ways;\r\n    return 0;\r\n}\r\n\r\n'
p3
tp4
stp5
.