Submission #1243896

#TimeUsernameProblemLanguageResultExecution timeMemory
1243896uroskFinancial Report (JOI21_financial)C++17
48 / 100
4093 ms9900 KiB
#define here cerr<<"===========================================\n"
#define dbg(x) cerr<<#x<<": "<<x<<endl;
#include <bits/stdc++.h>
#define llinf 100000000000000000LL // 10^17
#define iinf 2000000000 // 2*10^9
#define pb push_back
#define eb emplace_back
#define popb pop_back
#define fi first
#define sc second
#define endl '\n'
#define all(a) a.begin(),a.end()
#define ceri(a,l,r) {cerr<<#a<<": ";for(ll i_ = l;i_<=r;i_++) cerr<<a[i_]<< " ";cerr<<endl;}
#define cer(a) {cerr<<#a<<": ";for(ll x_ : a) cerr<<x_<< " ";cerr<<endl;}
#define si(a) (ll)(a.size())
using namespace std;
using ld = long double;
using ll = long long;
using ull = unsigned long long;
using pii = pair<int,int>;
using pll = pair<ll,ll>;
using pld = pair<ld,ld>;

const ll maxn = 300005;
ll n,d;
ll a[maxn];
pll dp[maxn];
vector<ll> v;
int main(){
	ios_base::sync_with_stdio(false);cerr.tie(0);cout.tie(0);cin.tie(0);
    cin >> n >> d;
    for(ll i = 1;i<=n;i++) cin >> a[i],v.pb(a[i]);
    sort(all(v));
    for(ll i = 1;i<=n;i++) a[i] = lower_bound(all(v),a[i])-v.begin()+1;
    for(ll i = 0;i<=n;i++) dp[i] = {0,0};
    for(ll i = 1;i<=n;i++){
        ll x = a[i];
        for(ll j = 0;j<=n;j++) if(dp[j].sc<i-d) dp[j] = {-1,-1};
        // for(ll j = 0;j<=n;j++) cerr<<"{ "<<dp[j].fi<<", "<<dp[j].sc<<"} ";
        // cerr<<endl;
        for(ll j = x;j<=n;j++){
            if(dp[j].fi!=-1){
                dp[j].sc = i;
            }
        }
        for(ll j = 0;j<x;j++){
            if(dp[j].fi!=-1){
                dp[x] = max(dp[x],{dp[j].fi+1,i});
            }
        }
        dp[x] = max(dp[x],{1,i});
    }
    for(ll j = 0;j<=n;j++) if(dp[j].sc<n-d) dp[j] = {-1,-1};
    pll ans = {-1,-1};
    for(ll i = 0;i<=n;i++) ans = max(ans,dp[i]);
    cout<<ans.fi<<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...