字符串的最长上升子序列,但是我WA了九个点,只剩10分,求助
这是我的代码
#include<bits/stdc++.h>
using namespace std;
vector<string> line;
string now,str,ans[1000005];
void init()
{
cin>>str;
now += str[0];
for(int i = 1;i < str.size();i++)
{
if('A'<=str[i]&&str[i]<='Z')
{
line.push_back(now);
now.clear();
}
now += str[i];
}
line.push_back(now);
}
int binary(int l,int r,string k)
{
while(l<r)
{
int mid = l+r>>1;
if(ans[mid]>=k)
r = mid;
else
l = mid+1;
}
return l;
}
int main()
{
init();
ans[0] = line[0];
int m = 1;
for(int i = 1;i < (int)line.size();i++)
{
if(line[i]>ans[m-1])
ans[m++] = line[i];
else
ans[binary(0,m-1,line[i])] = line[i];
}
for(int i = 0;i < m;i++)cout<<ans[i];
}
我觉得我可能错得很明显,但我虾(求助dalao QAQ)