Codeforces #323 Div. 2 B Robot's Task
問題
方針
終了するまで 1 と n を往復する.
実装
int n;
vector<int> a;
int solve(){
int ans = 0;
int cnt = 0;
vector<bool> done(n);
while(1){
rep(i,n){
if(done[i]) continue;
if(cnt >= a[i]){
done[i] = true;
cnt++;
}
}
if(cnt == n) break;
else ans++;
for(int i=n-1;i>=0;i--){
if(done[i]) continue;
if(cnt >= a[i]){
done[i] = true;
cnt++;
}
}
if(cnt == n) continue;
else ans++;
}
return ans;
}
signed main(){
while(cin >> n){
a.resize(n);
rep(i,n) cin >> a[i];
cout << solve() << endl;
}
}