Codeforces #323 Div. 2 B Robot's Task

2015/10/04 (Sun) Codeforces 貪欲

問題

問題文

方針

終了するまで 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;
    }
}