题目链接
下面是我写的,只过了16个测试集。。。
#include<iostream>
#include<vector>
#include<cmath>
using namespace std;
long long n;
long long nums[500050];
vector<long long> sub1;
vector<long long> sub2;
long long ans = -1;
void dfs(int t){
if(t == n){
long long temp1 = sub1.size();
long long temp2 = sub2.size();
//cout << temp1 << " " << temp2 << endl;
if(sub1.size() + sub2.size() == n && abs(temp1-temp2) > ans){
ans = abs(sub1.size()-sub2.size());
}
}else{
if(sub1.size() == 0 || sub1[sub1.size()-1] < nums[t]){
sub1.push_back(nums[t]);
dfs(t+1);
sub1.pop_back();
}
if(sub2.size() == 0 || sub2[sub2.size()-1] < nums[t]){
sub2.push_back(nums[t]);
dfs(t+1);
sub2.pop_back();
}
}
}
int main(){
cin >> n;
for(int i = 0;i<n;i++){
cin >> nums[i];
}
dfs(0);
cout << ans;
return 0;
}