Submission #70881034
Source Code Expand
#include <bits/stdc++.h>
#define INF 0x3f3f3f3f3f3f3f3f
#define inf 0x3f3f3f3f
#define pn putchar(10)
#define fi first
#define se second
#define pp putchar(' ')
#define pii pair<int,int>
#define pdi pair<ll,ll>
#define mem(aa,bb) memset(aa,bb,sizeof(aa))
#define fo(i,a,b) for(int i=(a);i<=(b);++i)
#define Fo(i,a,b) for(int i=(a);i>=(b);--i)
#define pb push_back
#define reg register
#define eb emplace_back
#define bct __builtin_popcount
#define mk make_pair
#define IT iterator
#define all(x) x.begin(),x.end()
#define lbd lower_bound
#define ubd upper_bound
#define lowbit(x) (x&(-x))
#define gb(x,i) ((x>>i)&1)
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
// #pragma GCC optimize(2)
using namespace std;
typedef int32_t i32;
typedef int64_t i64;
typedef uint32_t u32;
typedef uint64_t u64;
typedef __int128_t i128;
typedef __uint128_t u128;
typedef double db;
// typedef int ll;
typedef long long ll;
// typedef __int128 ll;
const ll mod=1e9+7;
// #define getchar getchar_unlocked
// #define putchar putchar_unlocked
template<class T>inline void read(T &s)
{
s=0;int f=1;char c=getchar();while(!isdigit(c)){if(c=='-'){f=-1;}c=getchar();}
while(isdigit(c)){s=(s<<3)+(s<<1)+(c^48),c=getchar();}s*=f;return;
}
template<class T>inline void wr(T x)
{
if(x<0){putchar('-'),x=-x;}int buf[21],top=0;while(x){buf[++top]=x%10,x/=10;}
if(!top){buf[++top]=0;}while(top){putchar(buf[top--]^'0');}return;
}
template<class T,class ...A>inline void read(T &x,A &...a){read(x);read(a...);}
struct Matrix
{
ll a[3][3];
Matrix(){mem(a,0);}
inline void init(){fo(i,0,2)a[i][i]=1;}
Matrix operator*(const Matrix &b) const
{
Matrix c;
fo(i,0,2)fo(k,0,2)fo(j,0,2)(c.a[i][j]+=a[i][k]*b.a[k][j])%=mod;
return c;
}
ll* operator[](int i){return a[i];}
};
Matrix A,B,ans;
inline void solve()
{
A[0][0]=2,A[0][1]=1,A[0][2]=1,A[1][0]=2,A[1][1]=1,A[1][2]=0,A[2][0]=1,A[2][1]=1,A[2][2]=1;
B[0][0]=1,B[0][1]=0,B[0][2]=0,B[1][0]=2,B[1][1]=1,B[1][2]=0,B[2][0]=1,B[2][1]=1,B[2][2]=1;
int n,m,lst=0,x;read(n,m);ans.init();
fo(i,1,m)
{
read(x);int b=x-lst-1;Matrix C=A;
for(;b;b>>=1,C=C*C)if(b&1)ans=C*ans;
ans=B*ans,lst=x;
}
int b=n-lst-1;Matrix C=A;
for(;b;b>>=1,C=C*C)if(b&1)ans=C*ans;
ans=B*ans;
wr(ans.a[2][0]%mod);
}
i32 main()
{
auto begin=chrono::high_resolution_clock::now();
// Mod=FastMod(mod);
int T=1;//read(T);
while(T--)solve();
auto end=chrono::high_resolution_clock::now();
auto elapsed=chrono::duration_cast<chrono::nanoseconds>(end-begin);
// cerr<<"Time measured: "<<elapsed.count()*1e-9<<" seconds.\n";
return 0;
}
Submission Info
| Submission Time |
|
| Task |
E - Placing Squares |
| User |
lhc0707 |
| Language |
C++ 20 (gcc 12.2) |
| Score |
1600 |
| Code Size |
2663 Byte |
| Status |
AC |
| Exec Time |
93 ms |
| Memory |
3680 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 |
3512 KiB |
| sample_02.txt |
AC |
1 ms |
3532 KiB |
| sample_03.txt |
AC |
1 ms |
3444 KiB |
| sample_04.txt |
AC |
1 ms |
3556 KiB |
| subtask_1_01.txt |
AC |
30 ms |
3508 KiB |
| subtask_1_02.txt |
AC |
8 ms |
3556 KiB |
| subtask_1_03.txt |
AC |
2 ms |
3516 KiB |
| subtask_1_04.txt |
AC |
5 ms |
3508 KiB |
| subtask_1_05.txt |
AC |
93 ms |
3648 KiB |
| subtask_1_06.txt |
AC |
93 ms |
3516 KiB |
| subtask_1_07.txt |
AC |
8 ms |
3492 KiB |
| subtask_1_08.txt |
AC |
8 ms |
3536 KiB |
| subtask_1_09.txt |
AC |
2 ms |
3508 KiB |
| subtask_1_10.txt |
AC |
1 ms |
3504 KiB |
| subtask_1_11.txt |
AC |
1 ms |
3612 KiB |
| subtask_1_12.txt |
AC |
1 ms |
3512 KiB |
| subtask_1_13.txt |
AC |
1 ms |
3508 KiB |
| subtask_1_14.txt |
AC |
1 ms |
3552 KiB |
| subtask_1_15.txt |
AC |
1 ms |
3516 KiB |
| subtask_1_16.txt |
AC |
1 ms |
3464 KiB |
| subtask_1_17.txt |
AC |
3 ms |
3588 KiB |
| subtask_1_18.txt |
AC |
5 ms |
3528 KiB |
| subtask_1_19.txt |
AC |
1 ms |
3532 KiB |
| subtask_1_20.txt |
AC |
7 ms |
3612 KiB |
| subtask_1_21.txt |
AC |
1 ms |
3504 KiB |
| subtask_1_22.txt |
AC |
1 ms |
3552 KiB |
| subtask_1_23.txt |
AC |
1 ms |
3552 KiB |
| subtask_1_24.txt |
AC |
1 ms |
3680 KiB |
| subtask_1_25.txt |
AC |
1 ms |
3552 KiB |
| subtask_1_26.txt |
AC |
1 ms |
3556 KiB |
| subtask_1_27.txt |
AC |
1 ms |
3644 KiB |
| subtask_1_28.txt |
AC |
1 ms |
3552 KiB |
| subtask_1_29.txt |
AC |
1 ms |
3680 KiB |
| subtask_1_30.txt |
AC |
1 ms |
3548 KiB |