이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |