Submission #160038

# Submission time Handle Problem Language Result Execution time Memory
160038 2019-10-25T17:55:47 Z Rouge_Hugo Global Warming (CEOI18_glo) C++14
27 / 100
1348 ms 44380 KB
#include <bits/stdc++.h>

using namespace std;
long long  n,x;
const long long  N=200009;
map<long long,long long>m;
int  tree[11*N],tree1[11*N],a[N];
void update(int ind,int st,int end,int uind,int uval)
{
    if (st==end)
    {
        tree[ind]=max(tree[ind],uval);
        return ;
    }
    int m=(st+end)/2;
    if (uind>m)update(ind*2+2,m+1,end,uind,uval);
    else update(ind*2+1,st,m,uind,uval);
    tree[ind]=max(tree[ind*2+1],tree[ind*2+2]);
}

void update1(int ind,int st,int end,int uind,int uval)
{
    if (st==end)
    {
        tree1[ind]=max(tree1[ind],uval);
        return ;
    }
    int m=(st+end)/2;
    if (uind>m)update1(ind*2+2,m+1,end,uind,uval);
    else update1(ind*2+1,st,m,uind,uval);
    tree1[ind]=max(tree1[ind*2+1],tree1[ind*2+2]);
}
int query(int ind,int st,int end,int l,int r)
{
    if (l<=st&&end<=r)return tree[ind];
    if (l>end||r<st)return 0;
    int m=(st+end )/2;
    return max(query(ind*2+1,st,m,l,r),query(ind*2+2,m+1,end,l,r));

}

int query1(int ind,int st,int end,int l,int r)
{
    if (l<=st&&end<=r)return tree1[ind];
    if (l>end||r<st)return 0;
    int  m=(st+end )/2;
    return max(query1(ind*2+1,st,m,l,r),query1(ind*2+2,m+1,end,l,r));
}
int main()
{ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);

    cin>>n>>x;
    for(int  i=0;i<n;i++){
        cin>>a[i];
        m[a[i]]++;
        m[a[i]-x]++;
        m[a[i]+x]++;
    }
    long long  re=0;
    for(auto it:m)
    {
        m[it.first]=re++;
    }
    int  mx=0;
    for(int  i=0;i<n;i++)
    {
        int   xx=query(0,0,re,0,m[a[i]]-1);
        update(0,0,re,m[a[i]],xx+1);

        int  y=query(0,0,re,0,m[a[i]+x]-1);
        y=max(query1(0,0,re,0,m[a[i]]-1),y);
        update1(0,0,re,m[a[i]],y+1);
        mx=max(mx,y+1);
        mx=max(mx,xx+1);
    }
    cout<<mx;
}
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Incorrect 2 ms 380 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Incorrect 2 ms 380 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Incorrect 2 ms 380 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 853 ms 17916 KB Output is correct
2 Correct 788 ms 17888 KB Output is correct
3 Correct 794 ms 17884 KB Output is correct
4 Correct 779 ms 17936 KB Output is correct
5 Correct 406 ms 9648 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 225 ms 14072 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 588 ms 22436 KB Output is correct
2 Correct 576 ms 22408 KB Output is correct
3 Correct 1348 ms 44380 KB Output is correct
4 Correct 627 ms 22816 KB Output is correct
5 Correct 401 ms 22560 KB Output is correct
6 Correct 757 ms 42360 KB Output is correct
7 Correct 765 ms 42616 KB Output is correct
8 Correct 465 ms 22392 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Incorrect 2 ms 380 KB Output isn't correct
4 Halted 0 ms 0 KB -