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