Submission #883661

#TimeUsernameProblemLanguageResultExecution timeMemory
883661vjudge1Pohlepko (COCI16_pohlepko)C++17
80 / 80
50 ms8284 KiB
#pragma GCC optimize("unroll-loops,Ofast,O3") #include <bits/stdc++.h> #define pb push_back #define mp make_pair #define spc << " " << #define endl "\n" #define all(x) x.begin(), x.end() #define int long long #define ii pair<int,int> #define vi vector<int> #define vii vector<ii> #define st first #define nd second #define inf 1000000009 #define MOD 998244353 #define lim 200005 using namespace std; void solve(){ int n,m; cin >> n >> m; string ans=""; char arr[n+1][m+1]; for(int i=1; i<=n; i++){ string s; cin >> s; for(int j=1; j<=m; j++){ arr[i][j] = s[j-1]; } } ans += arr[1][1]; set<ii> bfs, bfs2; bfs.insert({1,1}); for(int i=1; i<=n+m-2; i++){ int mini=inf; for(auto p:bfs){ if(p.st<n){ mini = min(mini, (long long) arr[p.st+1][p.nd]-'a'); } if(p.nd<m){ mini = min(mini, (long long) arr[p.st][p.nd+1]-'a'); } } for(auto p:bfs){ if(p.st<n){ if(arr[p.st+1][p.nd]-'a' == mini) bfs2.insert({p.st+1, p.nd}); } if(p.nd<m){ if(arr[p.st][p.nd+1]-'a' == mini) bfs2.insert({p.st, p.nd+1}); } } ans += (mini+'a'); swap(bfs, bfs2); bfs2.clear(); } cout << ans << endl; } signed main(){ ios_base::sync_with_stdio(false);cin.tie(0); #ifdef Local freopen("in","r",stdin); freopen("out","w",stdout); #endif /*freopen("fcolor.in","r",stdin); freopen("fcolor.out","w",stdout);*/ int t=1; //cin >> t; while(t--) solve(); }
#Verdict Execution timeMemoryGrader output
Fetching results...