Submission #515722

#TimeUsernameProblemLanguageResultExecution timeMemory
515722andrei_boacaGlobal Warming (CEOI18_glo)C++17
28 / 100
2080 ms4872 KiB
#include <bits/stdc++.h>

using namespace std;
typedef long long ll;
ll n,x,v[200005],ans,dp[200005],maxim[200005];
ll getLIS()
{
    ll rez=0;
    for(int i=1;i<=n;i++)
        maxim[i]=-2e9;
    for(int i=n;i>=1;i--)
    {
        int lg=0;
        int st=1;
        int dr=n-i;
        while(st<=dr)
        {
            int mij=(st+dr)/2;
            if(maxim[mij]>v[i])
            {
                lg=mij;
                st=mij+1;
            }
            else
                dr=mij-1;
        }
        dp[i]=lg+1;
        rez=max(rez,dp[i]);
        maxim[dp[i]]=max(maxim[dp[i]],v[i]);
    }
    return rez;
}
int main()
{
    cin>>n>>x;
    for(int i=1;i<=n;i++)
        cin>>v[i];
    ans=getLIS();
    for(int i=1;i<=n;i++)
    {
        v[i]-=x;
        ans=max(ans,getLIS());
    }
    cout<<ans;
    return 0;
}
#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...