提出 #21224362


ソースコード 拡げる

#include <bits/stdc++.h>
#define rep(i, x, y) for (int i = x; i <= y; i++)
using namespace std;

const int mod = 1e9 + 7, N = 1e5 + 10;
int n, m, p[N];

int add(int x, int y) { return (x + y) % mod; }
int sub(int x, int y) { return (x - y + mod) % mod; }
int mul(int x, int y) { return 1ll * x * y % mod; }
void Add(int &x, int y) { x = (x + y) % mod; }
void Sub(int &x, int y) { x = (x - y + mod) % mod; }
void Mul(int &x, int y) { x = 1ll * x * y % mod; }
int qpow(int a, int b) { int ret = 1; for (; b; b >>= 1, Mul(a, a)) if (b & 1) Mul(ret, a); return ret; }

struct mat {
    int x[5][5];
    mat() {
        memset(x, 0, sizeof(x));
    }
    friend mat operator * (mat a, mat b) {
        mat c;
        rep(i, 0, 2) rep(k, 0, 2) rep(j, 0, 2) Add(c.x[i][j], mul(a.x[i][k], b.x[k][j]));
        return c;
    }
    friend mat operator ^ (mat a, int b) {
        mat ret;
        rep(i, 0, 2) ret.x[i][i] = 1;
        for (; b; b >>= 1, a = a * a) if (b & 1) ret = ret * a;
        return ret;
    }
} A, B, ans;

int main() {
    cin >> n >> m;
    rep(i, 1, m) {
        scanf("%d", &p[i]);
    } sort(p + 1, p + m + 1);

    A.x[0][0] = A.x[1][0] = A.x[1][1] = A.x[2][0] = A.x[2][2] = 1, A.x[2][1] = 2;
    B = A;
    rep(i, 0, 2) ++B.x[i][2];

    ans.x[0][2] = 1;
    rep(i, 1, m) {
        ans = ans * (B ^ (p[i] - p[i - 1] - 1));
        ans = ans * A;
    }
    ans = ans * (B ^ (n - p[m]));
    printf("%d\n", ans.x[0][0]);
    return 0;
}

提出情報

提出日時
問題 E - Placing Squares
ユーザ forenight
言語 C++ (GCC 9.2.1)
得点 1600
コード長 1505 Byte
結果 AC
実行時間 204 ms
メモリ 4204 KiB

コンパイルエラー

./Main.cpp: In function ‘int main()’:
./Main.cpp:37:14: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
   37 |         scanf("%d", &p[i]);
      |         ~~~~~^~~~~~~~~~~~~

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 1600 / 1600
結果
AC × 4
AC × 38
セット名 テストケース
Sample sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt
All sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt, sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt, subtask_1_01.txt, subtask_1_02.txt, subtask_1_03.txt, subtask_1_04.txt, subtask_1_05.txt, subtask_1_06.txt, subtask_1_07.txt, subtask_1_08.txt, subtask_1_09.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_12.txt, subtask_1_13.txt, subtask_1_14.txt, subtask_1_15.txt, subtask_1_16.txt, subtask_1_17.txt, subtask_1_18.txt, subtask_1_19.txt, subtask_1_20.txt, subtask_1_21.txt, subtask_1_22.txt, subtask_1_23.txt, subtask_1_24.txt, subtask_1_25.txt, subtask_1_26.txt, subtask_1_27.txt, subtask_1_28.txt, subtask_1_29.txt, subtask_1_30.txt
ケース名 結果 実行時間 メモリ
sample_01.txt AC 6 ms 3688 KiB
sample_02.txt AC 2 ms 3816 KiB
sample_03.txt AC 2 ms 3580 KiB
sample_04.txt AC 1 ms 3556 KiB
subtask_1_01.txt AC 78 ms 3884 KiB
subtask_1_02.txt AC 26 ms 3628 KiB
subtask_1_03.txt AC 14 ms 3904 KiB
subtask_1_04.txt AC 27 ms 3960 KiB
subtask_1_05.txt AC 204 ms 4136 KiB
subtask_1_06.txt AC 203 ms 3940 KiB
subtask_1_07.txt AC 43 ms 4080 KiB
subtask_1_08.txt AC 43 ms 4204 KiB
subtask_1_09.txt AC 8 ms 3612 KiB
subtask_1_10.txt AC 6 ms 3756 KiB
subtask_1_11.txt AC 2 ms 3820 KiB
subtask_1_12.txt AC 2 ms 3708 KiB
subtask_1_13.txt AC 3 ms 3680 KiB
subtask_1_14.txt AC 7 ms 3668 KiB
subtask_1_15.txt AC 2 ms 3708 KiB
subtask_1_16.txt AC 3 ms 3760 KiB
subtask_1_17.txt AC 19 ms 3696 KiB
subtask_1_18.txt AC 33 ms 4072 KiB
subtask_1_19.txt AC 2 ms 3544 KiB
subtask_1_20.txt AC 41 ms 4068 KiB
subtask_1_21.txt AC 3 ms 3436 KiB
subtask_1_22.txt AC 2 ms 3556 KiB
subtask_1_23.txt AC 2 ms 3824 KiB
subtask_1_24.txt AC 2 ms 3756 KiB
subtask_1_25.txt AC 3 ms 3552 KiB
subtask_1_26.txt AC 2 ms 3692 KiB
subtask_1_27.txt AC 3 ms 3584 KiB
subtask_1_28.txt AC 2 ms 3684 KiB
subtask_1_29.txt AC 3 ms 3684 KiB
subtask_1_30.txt AC 2 ms 3756 KiB