Submission #65022669


Source Code Expand

Copy
#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'};
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
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
AC × 3
AC × 44
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


2025-06-06 (Fri)
18:30:51 +09:00