Submission #1369981

#TimeUsernameProblemLanguageResultExecution timeMemory
1369981codexistentBouquet (EGOI24_bouquet)C++20
100 / 100
74 ms14500 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N=2e5+5;

int n,ft[N],f[N],z=1;
vector<int>a[N];

void upd(int i,int v){ while(i<=n)ft[i]=max(ft[i],v),i+=(i&-i);}
int qry(int i){ return (i>0)?max(ft[i],qry(i-(i&-i))):0ll; }

signed main(){
    cin>>n;
    for(int i=1,l,r;i<=n;i++){
        for(int ai:a[i])upd(ai,f[ai]);

        cin>>l>>r,f[i]=1+qry(max(0ll,i-l-1));
        z=max(z,f[i]);

        for(int ai:a[i])upd(ai,f[ai]);
        if(i+r+1<=n)a[i+r+1].push_back(i);
    }
    cout<<z<<endl;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...