Submission #1326321

#TimeUsernameProblemLanguageResultExecution timeMemory
1326321rayxuGlobal Warming (CEOI18_glo)C++20
27 / 100
157 ms19356 KiB
#include <bits/stdc++.h>
#define int long long
using namespace std;
class SegTree {
  private:
    int sz;
    vector<int> tree;
  public:
    SegTree(int len):sz(len),tree(4*len,0){}
    void update(int ind,int val) {
        ind+=sz;
        tree[ind] = max(tree[ind],val);
        while (ind>1) {
            ind>>=1;
            tree[ind] = max(tree[ind*2],tree[ind*2+1]);
        }
    }
    int query(int l,int r) {
        l+=sz; r+=sz;
        int res=0;
        while (l<=r) {
            if (l&1) res = max(res,tree[l++]);
            if (!(r&1)) res = max(res,tree[r--]);
            l>>=1; r>>=1;
        }
        return res;
    }
} ;
signed main() {
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    //freopen("warm.in","r",stdin);
    int n,x; cin>>n>>x;
    vector<pair<int,int>> a(n);
    vector<int> all;
    for (auto &i:a) {
        cin>>i.first;
        i.second = i.first+x;
        all.push_back(i.first);
        all.push_back(i.first+x);
    }
    sort(begin(all),end(all));
    for (auto &i:a) {
        i.first = lower_bound(begin(all),end(all),i.first)-begin(all)+1;
        i.second = lower_bound(begin(all),end(all),i.second)-begin(all)+1;
    }
    SegTree segtree(2*n+2);
    //for (auto i:a) cout<<i.first<<" "<<i.second<<endl;
    for (int i=0;i<n;i++) {
        int mx=segtree.query(0,a[i].second-1);
        segtree.update(a[i].second,mx+1);
        mx = segtree.query(0,a[i].first-1);
        segtree.update(a[i].first,mx+1);
    }
    cout<<segtree.query(1,2*n);
    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...