Submission #1084837

#TimeUsernameProblemLanguageResultExecution timeMemory
1084837DucNguyen2007K-th path (IZhO11_kthpath)C++14
0 / 100
0 ms344 KiB
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ld long double
#define pii pair<int,int>
#define pll pair<ll,ll>
#define fi first
#define se second
const int maxN=101;
const ll inf=2e18;
int n,m;
ll dp[maxN+1][maxN+1][maxN+1],k;
char c[maxN+1][maxN+1];
vector<pii> v[26];
string s;
int main()
{
    //freopen("","r",stdin);
    //freopen("","w",stdout);
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    cin>>n>>m;
    for(int i=n;i>=1;i--)
    {
        for(int j=m;j>=1;j--)
        {
            cin>>c[i][j];
            v[c[i][j]-'a'].push_back({i,j});
        }
    }
    cin>>k;
    dp[0][1][1]=1;
    for(int st=1;st<=n+m-2;st++)
    {
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=m;j++)
            {
                dp[st][i][j]+=(dp[st-1][i-1][j]+dp[st-1][i][j-1]);
            }
        }
    }
    s="";
    s+=c[n][m];
    for(int st=n+m-3;st>=1;st--)
    {
        ll res=0,cur=0;
        for(int ch=0;ch<26;ch++)
        {
            for(auto [x,y]:v[ch])
            {
                res+=dp[st][x][y];
            }
            if(res>=k)
            {
                s+=(char)(ch+'a');
                k-=cur;
                //cout<<st<<" "<<ch<<'\n';
                break;
            }
            cur=res;
        }
    }
    s+=c[1][1];
    //reverse(s.begin(),s.end());
    cout<<s;
}

Compilation message (stderr)

kthpath.cpp: In function 'int main()':
kthpath.cpp:51:22: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   51 |             for(auto [x,y]:v[ch])
      |                      ^
#Verdict Execution timeMemoryGrader output
Fetching results...