Submission #1323545

#TimeUsernameProblemLanguageResultExecution timeMemory
1323545MuhammadSaramK-th path (IZhO11_kthpath)C++20
0 / 100
1 ms336 KiB
#include <bits/stdc++.h> using namespace std; #define int long long const int M = 60; int ncr[M][M]; set<pair<int,int>> se[M][2]; signed main() { for (int i=0;i<M;i++) { ncr[i][0]=1; for (int j=1;j<=i;j++) ncr[i][j]=ncr[i-1][j]+ncr[i-1][j-1]; } int n,m,k; cin>>n>>m; string a[n]; for (int i=0;i<n;i++) cin>>a[i]; cin>>k; int val=0, id=0; se[a[0][0]-'a'][0].insert({1,1}); string ans; for (int ct=0;ct<n+m-1;ct++) { for (int j=0;j<26;j++) { int su=0; for (auto [x,y]:se[j][id]) su+=ncr[n+m-x-y][n-x]; if (val+su>=k) { ans+=char('a'+j); for (int c=0;c<M;c++) se[c][1-id].clear(); for (auto [x,y]:se[j][id]) { if (x<n) se[a[x][y-1]-'a'][1-id].insert({x+1,y}); if (y<m) se[a[x-1][y]-'a'][1-id].insert({x,y+1}); } id=1-id; break; } else val+=su; } } cout<<ans<<endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...