Submission #1359197


Source Code Expand

#include<iostream>
#include<vector>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<ctime>
#include<queue>
#include<set>
using namespace std;
typedef long long LL;
int gi() {
	int w=0;bool q=1;char c=getchar();
	while ((c<'0'||c>'9') && c!='-') c=getchar();
	if (c=='-') q=0,c=getchar();
	while (c>='0'&&c <= '9') w=w*10+c-'0',c=getchar();
	return q? w:-w;
}
const int mod=1e9+7;
struct M{ int a[3][3]; };
inline M operator * (const M &a,const M &b) {
	M ans={};
	for (int i=0;i<3;i++)
		for (int j=0;j<3;j++)
			for (int k=0;k<3;k++)
				ans.a[i][j]=(ans.a[i][j]+1LL*a.a[i][k]*b.a[k][j])%mod;
	return ans;
}
const M trans=(M){
	{
		{1,2,1},//0->0 不放 0->1 两个球挑一个放 0->2 两个一起放
		{0,1,1},//1->0 不合法 1->1 不放 1->2 放剩下的一个
		{1,2,2}//2->0 新建 2->1 新建并选一个放 2->2 不放或新建并放两个
	}
};
const M O=(M){
	{
		{1,2,1},
		{0,1,1},
		{0,0,1}
	}
};
int main()
{
	int n=gi(),m=gi(),i,x=-1,last,y;
	M a={},b;a.a[0][0]=1;
	for (i=1;i<=m;i++) {
		last=x;x=gi();
		y=x-last-1;b=trans;
		while (y) {
			if (y&1) a=a*b;
			b=b*b;y>>=1;
		}
		if (x!=n) a=a*O;
	}
	if (x!=n) {
		y=n-x-1;b=trans;
		while (y) {
			if (y&1) a=a*b;
			b=b*b;y>>=1;
		}
	}
	printf("%d\n",a.a[0][2]);
	return 0;
}

Submission Info

Submission Time
Task E - Placing Squares
User laofu
Language C++14 (GCC 5.4.1)
Score 1600
Code Size 1361 Byte
Status AC
Exec Time 158 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 51 ms 256 KB
subtask_1_02.txt AC 14 ms 256 KB
subtask_1_03.txt AC 5 ms 256 KB
subtask_1_04.txt AC 10 ms 256 KB
subtask_1_05.txt AC 158 ms 256 KB
subtask_1_06.txt AC 158 ms 256 KB
subtask_1_07.txt AC 16 ms 256 KB
subtask_1_08.txt AC 16 ms 256 KB
subtask_1_09.txt AC 3 ms 256 KB
subtask_1_10.txt AC 2 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 2 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 5 ms 256 KB
subtask_1_18.txt AC 11 ms 256 KB
subtask_1_19.txt AC 1 ms 256 KB
subtask_1_20.txt AC 13 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