問題
ぷよぷよチックなやつのシミュレーションをする問題。「やるだけ」っていうやつ。
- C++で解答
- 問題: http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=1193
- 解答コード: http://judge.u-aizu.ac.jp/onlinejudge/review.jsp?rid=1357178
ソースコード主要部分
int main(int argc, const char * argv[]){ while(true){ int h; cin >> h; if(h == 0) return 0; int table[10][5], table_cp[10][5]; REP(i,h) REP(j,5){ cin >> table[i][j]; } bool flag = true; int ans = 0; while(flag){ // 配列のコピー REP(i,h){ REP(j,5){ table_cp[i][j] = table[i][j]; } } // 消滅判定 flag = false; RREP(i,h){ FOR(j,1,4){ if(table[i][j] && table[i][j-1] == table[i][j] && table[i][j] == table[i][j+1]){ flag = true; // 消えた場合は次のループへ table_cp[i][j-1] = 0; table_cp[i][j] = 0; table_cp[i][j+1] = 0; } } } // 得点計算 REP(i,h){ REP(j,5){ ans += table[i][j] - table_cp[i][j]; } } // 穴埋め REP(i,h){ for(int i = h-1; i > 0; i--){ REP(j,5){ if(table_cp[i][j] == 0){ table_cp[i][j] = table_cp[i-1][j]; table_cp[i-1][j] = 0; } } } } // 配列のコピー REP(i,h){ REP(j,5){ table[i][j] = table_cp[i][j]; } } } cout << ans << endl; } }
穴埋めの部分とか明らかに糞コードだけど、オーダー的に間に合う中で実装が早いのを選択した結果
余談
AOJのインタフェース変わったんですね。しかし、提出しようとしたら
問題解いてる時間の間にログアウトされてしましました。
更新連打しなくてもjudge結果が返ってくるのがすばらしいです。yukicoderもこの仕様になってたので、AtCoderもこれにならないかなぁ