提出 #18990974
ソースコード 拡げる
/*
after dusk passed,
there is a starry sky.
*/
#include <bits/stdc++.h>
#define inf 0x3f3f3f3f
#define m_k make_pair
#define mod 1000000007
#define int long long
using namespace std;
int n,m;
inline void add(int &a,int b){a=((a+b>=mod)?a+b-mod:a+b);}
inline void del(int &a,int b){a=((a-b<0)?a-b+mod:a-b);}
inline void mul(int &a,int b){a=a*b%mod;}
inline int m_pow(int a,int b)
{
int ans=1;
while (b)
{
if (b&1) mul(ans,a);
b>>=1;
mul(a,a);
}
return ans;
}
struct matrix
{
int a[4][4];
inline void clear(){memset(a,0,sizeof(a));}
inline void init(){clear();for (int i=1;i<=3;i++) a[i][i]=1;}
inline void get(int kind)
{
for (int i=1;i<=3;i++) for (int j=1;j<=3;j++) a[i][j]=1;
a[1][2]=2;a[2][1]=a[3][1]=a[3][2]=0;
if (kind==2) for (int i=1;i<=3;i++) a[i][1]++;
}
}A;
matrix B,ans;
matrix operator *(matrix a,matrix b)
{
matrix ans;ans.clear();
for (int i=1;i<=3;i++)
{
for (int k=1;k<=3;k++)
{
for (int j=1;j<=3;j++) add(ans.a[i][j],a.a[i][k]*b.a[k][j]%mod);
}
}
return ans;
}
matrix m_pow(matrix a,int b)
{
matrix ans;ans.init();
while (b)
{
if (b&1) ans=ans*a;
b>>=1;
a=a*a;
}
return ans;
}
inline int read()
{
int f=1,x=0;char s=getchar();
while(s<'0'||s>'9'){if(s=='-')f=-1;s=getchar();}
while(s>='0'&&s<='9'){x=x*10+s-'0';s=getchar();}
return x*f;
}
signed main()
{
n=read();m=read();
A.get(1);B.get(2);
ans.a[1][1]=1;
int last=0;
for (int i=1;i<=m;i++)
{
int x=read();
ans=ans*m_pow(B,x-last-1)*A;
last=x;
}
ans=ans*m_pow(B,n-last);
printf("%lld\n",ans.a[1][3]);
}
提出情報
| 提出日時 | |
|---|---|
| 問題 | E - Placing Squares |
| ユーザ | SevenDawns |
| 言語 | C++ (GCC 9.2.1) |
| 得点 | 1600 |
| コード長 | 1621 Byte |
| 結果 | AC |
| 実行時間 | 184 ms |
| メモリ | 3692 KiB |
ジャッジ結果
| セット名 | 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 | 9 ms | 3592 KiB |
| sample_02.txt | AC | 2 ms | 3448 KiB |
| sample_03.txt | AC | 3 ms | 3692 KiB |
| sample_04.txt | AC | 2 ms | 3576 KiB |
| subtask_1_01.txt | AC | 66 ms | 3468 KiB |
| subtask_1_02.txt | AC | 20 ms | 3552 KiB |
| subtask_1_03.txt | AC | 14 ms | 3692 KiB |
| subtask_1_04.txt | AC | 21 ms | 3688 KiB |
| subtask_1_05.txt | AC | 181 ms | 3656 KiB |
| subtask_1_06.txt | AC | 184 ms | 3620 KiB |
| subtask_1_07.txt | AC | 32 ms | 3580 KiB |
| subtask_1_08.txt | AC | 33 ms | 3652 KiB |
| subtask_1_09.txt | AC | 6 ms | 3496 KiB |
| subtask_1_10.txt | AC | 6 ms | 3576 KiB |
| subtask_1_11.txt | AC | 2 ms | 3656 KiB |
| subtask_1_12.txt | AC | 2 ms | 3552 KiB |
| subtask_1_13.txt | AC | 6 ms | 3600 KiB |
| subtask_1_14.txt | AC | 5 ms | 3600 KiB |
| subtask_1_15.txt | AC | 3 ms | 3656 KiB |
| subtask_1_16.txt | AC | 2 ms | 3600 KiB |
| subtask_1_17.txt | AC | 14 ms | 3620 KiB |
| subtask_1_18.txt | AC | 29 ms | 3652 KiB |
| subtask_1_19.txt | AC | 2 ms | 3620 KiB |
| subtask_1_20.txt | AC | 36 ms | 3576 KiB |
| subtask_1_21.txt | AC | 3 ms | 3552 KiB |
| subtask_1_22.txt | AC | 3 ms | 3400 KiB |
| subtask_1_23.txt | AC | 2 ms | 3576 KiB |
| subtask_1_24.txt | AC | 1 ms | 3500 KiB |
| subtask_1_25.txt | AC | 2 ms | 3576 KiB |
| subtask_1_26.txt | AC | 2 ms | 3656 KiB |
| subtask_1_27.txt | AC | 1 ms | 3448 KiB |
| subtask_1_28.txt | AC | 2 ms | 3500 KiB |
| subtask_1_29.txt | AC | 2 ms | 3540 KiB |
| subtask_1_30.txt | AC | 3 ms | 3444 KiB |