Submission #68638835


Source Code Expand

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int mod=1e9+7;
struct Matrix{
	int n,m,a[4][4];
	Matrix(){
		memset(a,0,sizeof(a)); 
	}
	Matrix(int _n,int _m){
		n=_n,m=_m;
		memset(a,0,sizeof(a));
	}
	Matrix operator * (Matrix b){
		Matrix c(n,b.m);
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				for(int k=1;k<=b.m;k++){
					c.a[i][k]=(c.a[i][k]+a[i][j]*b.a[j][k]%mod)%mod;
				}
			}
		}
		return c;
	}
};
int n,m,x[100005];
void trans(Matrix &f){
	f.a[1][3]+=(f.a[1][2]+f.a[1][1])%mod;
	f.a[1][3]%=mod;
	f.a[1][2]+=2*f.a[1][1]%mod;
	f.a[1][2]%=mod;
}
Matrix ksm(Matrix op,int b){
	Matrix res(3,3);
	res.a[1][1]=res.a[2][2]=res.a[3][3]=1;
	while(b){
		if(b&1) res=res*op;
		op=op*op;
		b/=2;
	}
	return res;
}
signed main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		cin>>x[i];
	}
	int lst=1;
	Matrix f(1,3);
	f.a[1][1]=1,f.a[1][2]=2,f.a[1][3]=1;
	Matrix op(3,3);
	op.a[1][1]=op.a[2][2]=op.a[2][3]=op.a[1][3]=op.a[3][1]=1;
	op.a[1][2]=op.a[3][2]=op.a[3][3]=2;
//	for(int i=2;i<=n;i++){
//		f=f*op;
//		for(int j=1;j<=3;j++) cout<<f.a[1][j]<<" ";
//		cout<<"\n";
//	}
	for(int i=1;i<=m;i++){
		f=f*ksm(op,x[i]-lst);
		trans(f);
		lst=x[i]+1;
	}
//	cout<<n-lst<<"\n";
//	 Matrix tmp=ksm(op,n-lst);
//	 for(int i=1;i<=3;i++){
//	 	for(int j=1;j<=3;j++){
//	 		cout<<tmp.a[i][j]<<" ";
//		 }
//		 cout<<"\n";
//	 }
//	 cout<<f.a[1][1]<<" "<<f.a[1][2]<<" "<<f.a[1][3]<<"\n";
	f=f*ksm(op,n-lst);
	cout<<f.a[1][3]<<"\n";
} 

Submission Info

Submission Time
Task E - Placing Squares
User george0929
Language C++ 20 (gcc 12.2)
Score 1600
Code Size 1583 Byte
Status AC
Exec Time 150 ms
Memory 4328 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 1600 / 1600
Status
AC × 4
AC × 38
Set Name Test Cases
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
Case Name Status Exec Time Memory
sample_01.txt AC 1 ms 3492 KiB
sample_02.txt AC 1 ms 3468 KiB
sample_03.txt AC 1 ms 3488 KiB
sample_04.txt AC 1 ms 3484 KiB
subtask_1_01.txt AC 48 ms 3684 KiB
subtask_1_02.txt AC 13 ms 3544 KiB
subtask_1_03.txt AC 4 ms 3652 KiB
subtask_1_04.txt AC 8 ms 3892 KiB
subtask_1_05.txt AC 150 ms 4128 KiB
subtask_1_06.txt AC 150 ms 4328 KiB
subtask_1_07.txt AC 12 ms 4132 KiB
subtask_1_08.txt AC 12 ms 4176 KiB
subtask_1_09.txt AC 3 ms 3480 KiB
subtask_1_10.txt AC 2 ms 3620 KiB
subtask_1_11.txt AC 1 ms 3620 KiB
subtask_1_12.txt AC 1 ms 3364 KiB
subtask_1_13.txt AC 2 ms 3620 KiB
subtask_1_14.txt AC 2 ms 3488 KiB
subtask_1_15.txt AC 1 ms 3472 KiB
subtask_1_16.txt AC 1 ms 3492 KiB
subtask_1_17.txt AC 4 ms 3712 KiB
subtask_1_18.txt AC 8 ms 4116 KiB
subtask_1_19.txt AC 1 ms 3488 KiB
subtask_1_20.txt AC 10 ms 4328 KiB
subtask_1_21.txt AC 1 ms 3420 KiB
subtask_1_22.txt AC 1 ms 3416 KiB
subtask_1_23.txt AC 1 ms 3620 KiB
subtask_1_24.txt AC 1 ms 3492 KiB
subtask_1_25.txt AC 1 ms 3400 KiB
subtask_1_26.txt AC 1 ms 3352 KiB
subtask_1_27.txt AC 1 ms 3420 KiB
subtask_1_28.txt AC 1 ms 3404 KiB
subtask_1_29.txt AC 1 ms 3472 KiB
subtask_1_30.txt AC 1 ms 3552 KiB