Submission #1305227

#TimeUsernameProblemLanguageResultExecution timeMemory
1305227nambanana987Global Warming (CEOI18_glo)C++20
100 / 100
139 ms13076 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define f first #define s second #define sz(a) (int)a.size() #define all(a) a.begin(),a.end() const int N=2e5+5; int M[N]; vector<int>comp; struct Fenwick{ int n; vector<int>fen; Fenwick(int _n) : fen(_n+5,0) , n(_n){} void reset(){ fill(all(fen),0); } int get(int i){ int res=0; for(; i>0;i-=i&-i) res=max(res,fen[i]); return res; } void update(int id,int val){ for( ; id<=n;id+=id&-id) fen[id]=max(fen[id],val); } }; int compress(int val){ return lower_bound(all(comp),val)-comp.begin()+1; } int dp0[N],dp1[N],dpr[N]; void solve(){ int n,x;cin>>n>>x; for(int i=1;i<=n;++i) { cin>>M[i]; comp.push_back(M[i]); comp.push_back(M[i]+x); } sort(all(comp)); comp.erase(unique(all(comp)),comp.end()); int m=sz(comp); Fenwick tree(m); for(int i=1;i<=n;++i){ //khong dung x int id=compress(M[i]); int val=tree.get(id-1); dp0[i]=val+1; //dung x val=tree.get(compress(M[i]+x)-1); dp1[i]=val+1; tree.update(id,dp0[i]); } tree.reset(); for(int i=n;i>=1;--i){ int newid=m-compress(M[i])+1; dpr[i]=tree.get(newid-1)+1; tree.update(newid,dpr[i]); } int ma=0; for(int i=1;i<=n;++i){ ma=max(ma,dp1[i]+dpr[i]-1); } cout<<ma; } signed main(){ ios::sync_with_stdio(false); cin.tie(nullptr); int t=1; //cin>>t; while(t--) solve(); }
#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...