Submission #596673

#TimeUsernameProblemLanguageResultExecution timeMemory
596673DanerZeinFinancial Report (JOI21_financial)C++14
28 / 100
4045 ms395560 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,ll> ii;
const int MAX_N=3e5+10;
vector<ll> x;
int val[7010];
int n,d;
int dp[7010][7010];

int report(int id,int ma){
  if(dp[id][ma]!=-1) return dp[id][ma];
  if(id==n+1) return 0;
  int r;
  if(id==1) r=n;
  else r=min(n,id+d-1);
  int ans=0;
  for(int i=id;i<=r;i++){
    ans=max(ans,report(i+1,max(ma,val[i]))+(val[i]>ma));
  }
    return dp[id][ma]=ans;
  
}

int main(){
  memset(dp,-1,sizeof dp);
  cin>>n>>d;
  x.push_back(-1);
  set<int> comp;
  for(int i=0;i<n;i++){
    ll a; cin>>a;
    comp.insert(a);
    x.push_back(a);
  }
  map<int,int> m;
  int c=1;
  for(auto &v:comp){
    m[v]=c;
    c++;
  }
  for(int i=1;i<=n;i++){
    val[i]=m[x[i]];
  }
  cout<<report(1,0)<<endl;
}
#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...