Submission #1796606


Source Code Expand

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cassert>
#include <cctype>
using namespace std;
typedef long long lint;
#define cout cerr
#define ni (next_num<int>())
template<class T>inline T next_num(){
	T i=0;char c;
	while(!isdigit(c=getchar())&&c!='-');
	bool flag=c=='-';
	flag?(c=getchar()):0;
	while(i=i*10-'0'+c,isdigit(c=getchar()));
	return flag?-i:i;
}
const int N=1010,O=1000000007;
struct Mat{
	const static int D=3;
	int a[D][D];
	inline friend Mat operator * (const Mat &a,const Mat &b){
		Mat c;
		for(int i=0;i<D;i++){
			for(int j=0;j<D;j++){
				lint tmp=0;
				for(int k=0;k<D;k++){
					tmp+=(lint)a.a[i][k]*b.a[k][j]%O;
				}
				c.a[i][j]=tmp%O;
			}
		}
		return c;
	}
	inline void fpow(Mat &res,int n){
		if(n==0){
			res=(Mat){1,0,0,0,1,0,0,0,1};
			return;
		}
		fpow(res,n>>1);
		res=res*res;
		if(n&1){
			res=res**this;
		}
	}
}trans1={1,2,1,0,1,1,1,2,2},trans2=(Mat){1,2,1,0,1,1,0,0,1};
int main(){
	int n=ni,m=ni,x=0;
	Mat ans,tmp;
	tmp.fpow(ans,0);
	for(int i=1,j;i<=m;i++){
		trans1.fpow(tmp,(j=ni)-x-1);
		ans=trans2*tmp*ans;
		x=j;
	}
	trans1.fpow(tmp,n-x-1);
	ans=tmp*ans;
	printf("%lld\n",((lint)ans.a[0][2]+(ans.a[1][2]<<1)+ans.a[2][2])%O);
	return 0;
}

Submission Info

Submission Time
Task E - Placing Squares
User sshockwave
Language C++14 (GCC 5.4.1)
Score 1600
Code Size 1271 Byte
Status AC
Exec Time 339 ms
Memory 256 KB

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 256 KB
sample_02.txt AC 1 ms 256 KB
sample_03.txt AC 1 ms 256 KB
sample_04.txt AC 1 ms 256 KB
subtask_1_01.txt AC 112 ms 256 KB
subtask_1_02.txt AC 26 ms 256 KB
subtask_1_03.txt AC 6 ms 256 KB
subtask_1_04.txt AC 14 ms 256 KB
subtask_1_05.txt AC 338 ms 256 KB
subtask_1_06.txt AC 339 ms 256 KB
subtask_1_07.txt AC 23 ms 256 KB
subtask_1_08.txt AC 23 ms 256 KB
subtask_1_09.txt AC 4 ms 256 KB
subtask_1_10.txt AC 3 ms 256 KB
subtask_1_11.txt AC 1 ms 256 KB
subtask_1_12.txt AC 1 ms 256 KB
subtask_1_13.txt AC 2 ms 256 KB
subtask_1_14.txt AC 3 ms 256 KB
subtask_1_15.txt AC 1 ms 256 KB
subtask_1_16.txt AC 1 ms 256 KB
subtask_1_17.txt AC 7 ms 256 KB
subtask_1_18.txt AC 16 ms 256 KB
subtask_1_19.txt AC 1 ms 256 KB
subtask_1_20.txt AC 19 ms 256 KB
subtask_1_21.txt AC 1 ms 256 KB
subtask_1_22.txt AC 1 ms 256 KB
subtask_1_23.txt AC 1 ms 256 KB
subtask_1_24.txt AC 1 ms 256 KB
subtask_1_25.txt AC 1 ms 256 KB
subtask_1_26.txt AC 1 ms 256 KB
subtask_1_27.txt AC 1 ms 256 KB
subtask_1_28.txt AC 1 ms 256 KB
subtask_1_29.txt AC 1 ms 256 KB
subtask_1_30.txt AC 1 ms 256 KB