제출 #1244137

#제출 시각아이디문제언어결과실행 시간메모리
1244137emad234Financial Report (JOI21_financial)C++20
0 / 100
4094 ms2396 KiB
#include "bits/stdc++.h"
#define F first
#define S second
#define ll long long
#define pii pair<int,int>
const int mxN = 3e5 + 5;
const int mod = 1e9 + 7;
using namespace std;
int dp[mxN];
int a[mxN];
int n,d;
int t[mxN];
signed main(){
  cin >>n>>d;
  if(d == n){
    vector<int>v;
    for(int i = 1;i <= n;i++){
      if(v.empty() || lower_bound(v.begin(),v.end(),a[i]) == v.end()) {
        v.push_back(a[i]);
        // cout<<v.size()<<' ';
        continue;
      }
      int x = lower_bound(v.begin(),v.end(),a[i]) - v.begin();
      v[x] = a[i];
      // cout<<v.size()<<' ';
    }
    cout<<v.size();
    return 0;
  }
  for(int i = 1;i <= n;i++) cin >>a[i];
  int ans = 0;
  for(int i = 1;i <= n;i++){
    dp[i] = 1;
    t[i] = i;
    for(int j = 1;j < i;j++){
      if(i - t[j] <= d){
        if(a[j] >= a[i]) t[j] = i;
        else{
          dp[i] = max(dp[i],dp[j] + 1);
        }
      }
    }
    ans = max(ans,dp[i]);
  }
  cout<<ans;
}
#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...