Submission #65022669
Source Code Expand
Copy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#ifndef _Alignof
#define _Alignof __alignof__
#endif
#include <bits/stdc++.h>
#include <numeric>
#define LOOP(n) for (int _i = 0; _i < (n); _i++)
#define REP(i, n) for (int i = 0; i < (n); ++i)
#define RREP(i, n) for (int i = (n); i >= 0; --i)
#define FOR(i, r, n) for (int i = (r); i < (n); ++i)
#define ALL(obj) begin(obj), end(obj)
#define yes "Yes"
#define no "No"
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
typedef pair<ll,int> pli;
typedef pair<int,ll> pil;
typedef vector<vector<int>> vvi;
typedef vector<vector<ll>> vvl;
const vector<char> alpha = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
int dx[4] = {0, 1, 0, -1};
int dy[4] = {1, 0, -1, 0};
const ll INF = 1e18;
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int N;
ll M;
int A[21][21];
int K,S;
vector<ll> pmod;
inline int key(int x,int y){return (x<<5)|y;}
void dfs_pref(int x,int y,int moves,ll rem,unordered_map<int,vector<ll>>& mp){
if(moves==K){
mp[key(x,y)].push_back(rem);
return;
}
ll nrem=(rem*10+A[x][y])%M;
if(x+1<=N) dfs_pref(x+1,y,moves+1,nrem,mp);
if(y+1<=N) dfs_pref(x,y+1,moves+1,nrem,mp);
}
void dfs_suf(int x,int y,int steps,int len,ll val,unordered_map<int,vector<ll>>& mp){
if(steps==S){
mp[key(x,y)].push_back(val);
return;
}
if(x>1){
int nx=x-1,ny=y;
ll nval=(A[nx][ny]*pmod[len]+val)%M;
dfs_suf(nx,ny,steps+1,len+1,nval,mp);
}
if(y>1){
int nx=x,ny=y-1;
ll nval=(A[nx][ny]*pmod[len]+val)%M;
dfs_suf(nx,ny,steps+1,len+1,nval,mp);
}
}
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
if(!(cin>>N>>M)) return 0;
for(int i=1;i<=N;i++)for(int j=1;j<=N;j++) cin>>A[i][j];
if(N==1){
cout<<A[1][1]%M<<"\n";
return 0;
}
int T=2*N-2;
K=T/2;
S=T-K;
pmod.assign(T+2,1);
for(int i=1;i<=T+1;i++) pmod[i]=(pmod[i-1]*10)%M;
unordered_map<int,vector<ll>> pref,suf;
dfs_pref(1,1,0,0,pref);
dfs_suf(N,N,0,1,A[N][N]%M,suf);
for(auto& kv:suf){
auto& v=kv.second;
sort(v.begin(),v.end());
v.erase(unique(v.begin(),v.end()),v.end());
}
ll powsuf=pmod[S+1]%M;
ll ans=0;
for(auto& kv:pref){
int k=kv.first;
if(!suf.count(k)) continue;
auto& pre=kv.second;
auto& sufvec=suf[k];
for(ll rp:pre){
ll base=(rp*powsuf)%M;
ll need=M-1-base;
auto it=upper_bound(sufvec.begin(),sufvec.end(),need);
ll cand;
if(it==sufvec.begin()) cand=(base+sufvec.back())%M;
else{--it; cand=(base+*it)%M;}
if(cand>ans) ans=cand;
if(ans==M-1){cout<<ans<<endl;return 0;}
}
}
cout<<ans<<endl;
}
Submission Info
| Submission Time |
|
| Task |
F - Path to Integer |
| User |
una_o0 |
| Language |
C++ 17 (gcc 12.2) |
| Score |
525 |
| Code Size |
2978 Byte |
| Status |
AC |
| Exec Time |
92 ms |
| Memory |
13800 KiB |
Judge Result
| Set Name |
Sample |
All |
| Score / Max Score |
0 / 0 |
525 / 525 |
| Status |
|
|
| Set Name |
Test Cases |
| Sample |
00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt |
| All |
00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_handmade_00.txt, 01_handmade_01.txt, 01_handmade_02.txt, 01_handmade_03.txt, 01_handmade_04.txt, 01_handmade_05.txt, 01_handmade_06.txt, 01_handmade_07.txt, 01_handmade_08.txt, 01_handmade_09.txt, 01_handmade_10.txt, 01_handmade_11.txt, 01_handmade_12.txt, 01_handmade_13.txt, 01_handmade_14.txt, 01_handmade_15.txt, 02_random_00.txt, 02_random_01.txt, 02_random_02.txt, 02_random_03.txt, 02_random_04.txt, 02_random_05.txt, 02_random_06.txt, 02_random_07.txt, 02_random_08.txt, 02_random_09.txt, 02_random_10.txt, 02_random_11.txt, 02_random_12.txt, 02_random_13.txt, 02_random_14.txt, 02_random_15.txt, 02_random_16.txt, 02_random_17.txt, 02_random_18.txt, 02_random_19.txt, 02_random_20.txt, 02_random_21.txt, 02_random_22.txt, 02_random_23.txt, 02_random_24.txt |
| Case Name |
Status |
Exec Time |
Memory |
| 00_sample_00.txt |
AC |
1 ms |
3636 KiB |
| 00_sample_01.txt |
AC |
1 ms |
3440 KiB |
| 00_sample_02.txt |
AC |
1 ms |
3576 KiB |
| 01_handmade_00.txt |
AC |
1 ms |
3508 KiB |
| 01_handmade_01.txt |
AC |
1 ms |
3500 KiB |
| 01_handmade_02.txt |
AC |
1 ms |
3424 KiB |
| 01_handmade_03.txt |
AC |
1 ms |
3512 KiB |
| 01_handmade_04.txt |
AC |
1 ms |
3460 KiB |
| 01_handmade_05.txt |
AC |
3 ms |
3732 KiB |
| 01_handmade_06.txt |
AC |
24 ms |
13796 KiB |
| 01_handmade_07.txt |
AC |
26 ms |
13596 KiB |
| 01_handmade_08.txt |
AC |
27 ms |
13672 KiB |
| 01_handmade_09.txt |
AC |
26 ms |
13672 KiB |
| 01_handmade_10.txt |
AC |
1 ms |
3576 KiB |
| 01_handmade_11.txt |
AC |
1 ms |
3604 KiB |
| 01_handmade_12.txt |
AC |
35 ms |
13696 KiB |
| 01_handmade_13.txt |
AC |
49 ms |
13724 KiB |
| 01_handmade_14.txt |
AC |
24 ms |
13724 KiB |
| 01_handmade_15.txt |
AC |
27 ms |
13628 KiB |
| 02_random_00.txt |
AC |
1 ms |
3500 KiB |
| 02_random_01.txt |
AC |
1 ms |
3496 KiB |
| 02_random_02.txt |
AC |
1 ms |
3516 KiB |
| 02_random_03.txt |
AC |
2 ms |
3608 KiB |
| 02_random_04.txt |
AC |
1 ms |
3364 KiB |
| 02_random_05.txt |
AC |
1 ms |
3384 KiB |
| 02_random_06.txt |
AC |
1 ms |
3640 KiB |
| 02_random_07.txt |
AC |
1 ms |
3492 KiB |
| 02_random_08.txt |
AC |
10 ms |
4644 KiB |
| 02_random_09.txt |
AC |
1 ms |
3528 KiB |
| 02_random_10.txt |
AC |
87 ms |
13672 KiB |
| 02_random_11.txt |
AC |
54 ms |
13628 KiB |
| 02_random_12.txt |
AC |
51 ms |
13796 KiB |
| 02_random_13.txt |
AC |
49 ms |
13664 KiB |
| 02_random_14.txt |
AC |
48 ms |
13700 KiB |
| 02_random_15.txt |
AC |
92 ms |
13640 KiB |
| 02_random_16.txt |
AC |
89 ms |
13800 KiB |
| 02_random_17.txt |
AC |
50 ms |
13612 KiB |
| 02_random_18.txt |
AC |
86 ms |
13740 KiB |
| 02_random_19.txt |
AC |
50 ms |
13632 KiB |
| 02_random_20.txt |
AC |
90 ms |
13648 KiB |
| 02_random_21.txt |
AC |
55 ms |
13672 KiB |
| 02_random_22.txt |
AC |
51 ms |
13612 KiB |
| 02_random_23.txt |
AC |
90 ms |
13700 KiB |
| 02_random_24.txt |
AC |
85 ms |
13516 KiB |