http://arc080.contest.atcoder.jp/tasks/arc080_b
解説
http://arc080.contest.atcoder.jp/submissions/1485890
数を順番に配置していくことを考える。
この時、端から順にジグザグに配置していけば、題意を満たす配置になることが考えられる。
(ジグザグにすれば必ず前の配置と連続な配置となる)
後は、実装だが普通に配置して、出力時にy座標のパリティで入れ替えるようにした。
int H, W, N, A[101010]; int ans[1010][1010]; //--------------------------------------------------------------------------------------------------- void _main() { cin >> H >> W >> N; rep(i, 0, N) cin >> A[i]; int cu = 0; rep(y, 0, H) rep(x, 0, W) { ans[y][x] = cu + 1; A[cu]--; if (!A[cu]) cu++; } rep(y, 0, H) { rep(_x, 0, W) { int x; if (y % 2 == 0) x = _x; else x = W - 1 - _x; if (_x) printf(" "); printf("%d", ans[y][x]); } printf("\n"); } }