Submission #1111491

#TimeUsernameProblemLanguageResultExecution timeMemory
1111491zhehanTrains (BOI24_trains)C++14
0 / 100
19 ms848 KiB
#include <bits/stdc++.h> using namespace std; int ft[100000+5]; void upd(int p,int v){ while(p<=100000){ ft[p]+=v; p+=p&(-p); } } int qry(int p){ int sum=0; while(p>0){ sum+=ft[p]; p-=p&(-p); } return sum; } int main() { int n,d,x,ways=1; cin>>n; pair<int,int> stops[n+1]; for(int i=0;i<n;++i){ cin>>d>>x; stops[i+1].first=d; stops[i+1].second=x; } upd(1,1); upd(2,-1); for(int i=1;i<=n;++i){ if(qry(i)>0){ int moves=0; if(stops[i].first!=0){ moves=min(stops[i].second,(n-i)/stops[i].first); } ways+=moves; upd(i,1); upd(i+moves*stops[i].first+1,-1); } } cout<<ways<<'\n'; 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...