結果
問題 | No.2064 Smallest Sequence on Grid |
ユーザー |
|
提出日時 | 2022-09-02 21:38:27 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 199 ms / 3,000 ms |
コード長 | 1,886 bytes |
コンパイル時間 | 2,190 ms |
コンパイル使用メモリ | 145,668 KB |
最終ジャッジ日時 | 2025-02-07 00:55:38 |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 29 |
ソースコード
#pragma GCC optimize("Ofast")#include <iostream>#include <vector>#include <algorithm>#include <map>#include <queue>#include <cstdio>#include <ctime>#include <assert.h>#include <chrono>#include <random>#include <numeric>#include <set>#include <deque>#include <stack>#include <sstream>#include <utility>#include <cstring>#include <unordered_map>#include <unordered_set>#include <tuple>#include <array>#include <bitset>using namespace std;typedef long long int ll;typedef unsigned long long ull;mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());ll myRand(ll B) {return (ull)rng() % B;}inline double time() {return static_cast<long double>(chrono::duration_cast<chrono::nanoseconds>(chrono::steady_clock::now().time_since_epoch()).count()) * 1e-9;}int main(){cin.tie(nullptr);ios::sync_with_stdio(false);int h,w; cin >> h >> w;vector<string> s(h);for(int i=0;i<h;i++){cin >> s[i];}string res = "";res += s[0][0];vector<vector<bool>> used(h,vector<bool>(w));vector<pair<int,int>> q;q.push_back({0,0});for(int i=1;i<h-1+w;i++){vector<pair<int,int>> nq;char c = 'z';for(auto p:q){int x = p.first, y = p.second;if(x+1<h){c = min(c, s[x+1][y]);}if(y+1<w){c = min(c, s[x][y+1]);}}res += c;for(auto p:q){int x = p.first, y = p.second;if(x+1<h and s[x+1][y] == c and !used[x+1][y]){nq.push_back({x+1,y});used[x+1][y] = true;}if(y+1<w and s[x][y+1] == c and !used[x][y+1]){nq.push_back({x,y+1});used[x][y+1] = true;}}swap(q,nq);}cout << res << endl;}