提出 #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
結果
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 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