PKU 2275 Flipping Pancake

http://poj.org/problem?id=2275
1からNまで適当に並んだN個の数列がある。
この時、この数列の最初からk番目までの数字の並びを逆転させる操作を繰り返してソートされた状態にしたい。
その手順を出力しろというような問題。

大きいほうから並べていくシミュレーションをしてその手順を出力しました。

main(){
  int n;
  while(cin>>n,n){
    int in[n];
    rep(i,n)cin>>in[i];
    vector<int> ans;

    for(int i=n;i;--i){
      for(int j=0;j<i-1;++j){
        if(in[j]==i){
          reverse(in,in+j+1);
          reverse(in,in+i);
          if(j)ans.pb(j+1);
          if(i)ans.pb(i);
        }
      }
    }
    cout<<SZ(ans);
    FOR(it,ans)cout<<' '<<*it;cout<<endl;
  }
}