제출 #1353348

#제출 시각아이디문제언어결과실행 시간메모리
135334812345678Global Warming (CEOI18_glo)C++17
17 / 100
29 ms3920 KiB
#include <bits/stdc++.h>

using namespace std;

const int nx=2e5+5;

int n, x, a[nx], b[nx], lis[nx], lds[nx], res; // lis[i] = lis when considering prefix i

int main()
{
    cin.tie(NULL)->sync_with_stdio(false);
    cin>>n>>x;
    for (int i=1; i<=n; i++) cin>>a[i], b[i]=-a[i];
    vector<int> v;
    for (int i=1; i<=n; i++)
    {
        auto idx=lower_bound(v.begin(), v.end(), a[i])-v.begin();
        if (idx==v.size()) v.push_back(a[i]);
        else v[idx]=a[i];
        lis[i]=v.size();
    }   
    v.clear();
    for (int i=n; i>=1; i--)
    {
        auto idx=lower_bound(v.begin(), v.end(), b[i])-v.begin();
        if (idx==v.size()) v.push_back(b[i]);
        else v[idx]=b[i];
        lds[i]=v.size();
    }
    for (int i=0; i<=n; i++) res=max(res, lis[i]+lds[i+1]);
    cout<<res;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...