Submission #1240526

#TimeUsernameProblemLanguageResultExecution timeMemory
1240526skibidi123Financial Report (JOI21_financial)C++20
14 / 100
4091 ms8868 KiB
#include <bits/stdc++.h>
#define long long long
using namespace std;
multiset<pair<int,int>> m;
int main(){
    int n,d;cin>>n>>d;
    vector<int>a(n);
    for(int&i:a)cin>>i;
    const pair<int,int> oo={0,0};
    vector<pair<int,int>> f(n,oo), q(n,oo);
    // base
    f[0]={-1,a[0]};
    q[0]=f[0];
    m.insert(f[0]);
    m.insert(q[0]);
    int ans=1;
    for(int i=1;i<n;i++){
        if(i>d){
            int j=i-d-1;
            m.erase(m.find(f[j]));
            m.erase(m.find(q[j]));
        }
        f[i]=*m.begin();
        if(a[i]>f[i].second){
            f[i].first--;
            f[i].second=a[i];
        }
        ans=max(ans,-f[i].first);
        m.insert(f[i]);
        q[i]={-1,a[i]};
        for(auto it=m.begin();it!=m.end();++it)
            if(it->second<a[i]){
                q[i]=*it;
                q[i].first--;
                q[i].second=a[i];
                break;
            }
        ans=max(ans,-q[i].first);
        m.insert(q[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...