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 |
|
|
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 |