Submission #338191

#TimeUsernameProblemLanguageResultExecution timeMemory
338191amunduzbaevK-th path (IZhO11_kthpath)C++14
100 / 100
2 ms364 KiB
/** made by amunduzbaev **/ #include <bits/stdc++.h> using namespace std; #define ff first #define ss second #define pb push_back #define mp make_pair #define ub upper_bound #define lb lower_bound #define ll long long #define ld long double #define pii pair<int, int> #define pll pair<ll, ll> #define sz(x) (int)x.size() #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(),x.rend() #define fastios ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define vll vector<ll> #define vii vector<int> #define vpii vector<pii> #define vpll vector<pll> const int N = 35; const int mod = 1e9+7; const ll inf = 1e18; const ld Pi = acos(-1); ll n, m, k, dp[N][N]; string ans; char a[N][N]; ll check(int i, int j){ if(i == n-1 && j == m-1) return 1; int cur = i+j; if(ans[cur] != '*' && ans[cur] != a[i][j]) return 0; ll &r = dp[i][j]; if(r != -1) return r; r = 0; if(i+1 < n) r += check(i+1, j); if(j+1 < m) r += check(i, j+1); return r; } void solve(){ fastios cin>>n>>m; for(int i=0;i<n;i++){ for(int j=0;j<m;j++) cin>>a[i][j]; } cin>>k; ans.resize(n+m-1, '*'); for(int i=0;i<n+m-1;i++){ for(int j=0;j<26;j++){ memset(dp, -1, sizeof(dp)); ans[i] = 'a'+j; ll ch = check(0, 0); if(ch >= k) break; k-=ch; } } ans[n+m-2] = a[n-1][m-1]; cout<<ans<<"\n"; return; } int main(){ fastios int t = 1; if(t) solve(); else { cin>>t; while (t--) solve(); } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...