이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |