Submission #1263718

#TimeUsernameProblemLanguageResultExecution timeMemory
1263718chinhhoangFinancial Report (JOI21_financial)C++20
0 / 100
46 ms4816 KiB
#include <bits/stdc++.h> using namespace std; vector<int>FT(200002,0); void add(int i,int val){ while(i<200002){ FT[i]=max(FT[i],val); i+=i&-i; } } int get(int i){ int s = 0; while(i){ s=max(s,FT[i]); i-=i&-i; } return s; } int main(){ ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); int n,d; cin>>n>>d; int a[n+1]; for(int i=1;i<=n;i++)cin>>a[i]; vector<int>val; for(int i=1;i<=n;i++)val.push_back(a[i]); sort(val.begin(),val.end()); val.erase(unique(val.begin(),val.end()),val.end()); for(int i=1;i<=n;i++)a[i]=lower_bound(val.begin(),val.end(),a[i])-val.begin()+1; int j=1; vector<int>dp(n+1,0); for(int i=1;i<=n;i++)dp[i]=1; int ans=0; for(int i=1;i<=n;i++){ while(i-j>d&&j<i){ add(a[j],dp[j]); j++; } dp[i]=get(a[i]-1)+1; ans=max(ans,dp[i]); } cout<<ans; 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...