Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<limits.h>
- void DFS(vector<int> &A, vector<int> &B, int &res, vector<int> tmp, int nextIndex) {
- int curIndex = tmp.back();
- if (!(A[curIndex] <= A[nextIndex] && A[nextIndex] <= B[curIndex]) &&
- !(A[nextIndex] <= A[curIndex] && A[curIndex] <= B[nextIndex])) {
- tmp.push_back(nextIndex);
- }
- res = max(res, (int)tmp.size());
- for (int i = nextIndex + 1; i < (int)A.size(); i++) {
- DFS(A, B, res, tmp, i);
- }
- }
- int solution(vector<int> &A, vector<int> &B) {
- // write your code in C++14 (g++ 6.2.0)
- int size = (int)A.size();
- vector<int> tmp;
- int res = 0;
- for (int i = 0; i < (int)A.size() - 1; i++) {
- tmp.push_back(i);
- DFS(A, B, res, tmp, i + 1);
- tmp.pop_back();
- }
- return size == 1 ? 1: res;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement