# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
920119 | Faisal_Saqib | Global Warming (CEOI18_glo) | C++17 | 94 ms | 6800 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <iostream>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;
const int N=2e5+100;
int cpy[N],n,x;
long long dp[N];
int val[N];
pair<int,int> revert[N];
void GTA6()
{
for(int i=0;i<=n;i++)
{
val[i]=-3e9;
dp[i]=3e9;
}
val[0]=3e9;
dp[0]=-3e9;
for(int i=n-1;i>=0;i--)
{
cpy[i]=-cpy[i];
int xc=lower_bound(dp,dp+n+1,cpy[i])-dp;
revert[i]={xc,val[xc]};
val[xc]=max(-cpy[i],val[xc]);
dp[xc]=cpy[i];
cpy[i]=-cpy[i];
}
}
int main()
{
cin>>n>>x;
for(int i=0;i<n;i++)
cin>>cpy[i];
int ans=0;
int final=0;
GTA6();
for(int i=0;i<=n;i++)
dp[i]=3e9;
dp[0]=-3e9;
for(int i=0;i<n;i++)
{
cpy[i]-=x;
int xc=lower_bound(dp,dp+n+1,cpy[i])-dp;
dp[xc]=cpy[i];
val[revert[i].first]=revert[i].second;
int s=0;
int e=n+1;
while(s+1<e)
{
int mid=(s+e)/2;
if(val[mid]>(cpy[i]))
s=mid;
else
e=mid;
}
final=max(final,xc+s);
}
cout<<final<<'\n';
return 0;
}
Compilation message (stderr)
# | 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... |