提出 #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;
}
提出情報
コンパイルエラー
./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 |
| 結果 |
|
|
| セット名 |
テストケース |
| 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 |