Submission #1178440

#TimeUsernameProblemLanguageResultExecution timeMemory
1178440ChocoBouquet (EGOI24_bouquet)C++20
100 / 100
52 ms14456 KiB
#include<bits/stdc++.h>
using namespace std;
#define Study ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL)
#define ll long long
#define ull unsigned long long
#define pb push_back
#define ff first 
#define ss second
#define ins insert
#define all(x) x.begin(),x.end()
#define fori(x,y,z) for(ll x=y;x<=z;x++)
const ll INF=1e9;
const ll sz=2e5+10;
const ll mod=1e9+7;
ll fw[sz];
void update(ll ind,ll val){
  while(ind<sz){
    fw[ind]=max(fw[ind],val);
    ind+=(ind&(-ind));
  }
}
ll query(ll ind){
  ll res=0;
  while(ind>0){
    res=max(fw[ind],res);
    ind-=(ind&(-ind));
  }
  return res;
}
void work(){
  ll n;
  cin>>n;
  vector<ll>dp(sz);
  vector<vector<ll>>upd(sz);
  ll ans=0;
  fori(i,1,n){
    ll l,r;
    cin>>l>>r;
    if(i-1<=l)
    dp[i]=1;
    else
    dp[i]=query(i-l-1)+1;
    ans=max(ans,dp[i]);
    upd[min(i+r,n)].pb(i);
    for(auto x: upd[i])
    update(x,dp[x]);
  }
  cout<<ans;
}
int main(){
  Study;
  ll t=1;
  //cin>>t;
  fori(i,1,t){
    work();
  }
}
#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...