はまやんはまやんはまやん

hamayanhamayan's blog

Subarray Sum [Keyence Programming Contest 2020 C]

https://atcoder.jp/contests/keyence2020/tasks/keyence2020_c

解説

https://atcoder.jp/contests/keyence2020/submissions/9582827

問題にかなりの弱点がある。
0≦K≦Nの部分である。
よって、大体はSをK個並べて、残りをINFにすればいい。
INFは最大が109なので、これにしておく。

この場合、S=109の時におかしくなる。
SをK個並べて、残りは1にしておこう。
1を集めても109にすることはできないためである。

int N, K, S;
int MA = 1000000000;
int ans[101010];
//---------------------------------------------------------------------------------------------------
void _main() {
    cin >> N >> K >> S;

    if (S == MA) {
        rep(i, 0, K) ans[i] = MA;
        rep(i, K, N) ans[i] = 1;
    }
    else {
        rep(i, 0, K) ans[i] = S;
        rep(i, K, N) ans[i] = MA;
    }

    rep(i, 0, N) {
        if(i) printf(" ");
        printf("%d", ans[i]);
    }
    printf("\n");
}