結果

問題 No.2657 Falling Block Game
ユーザー aaaaaaaaaa2230
提出日時 2024-03-01 23:22:53
言語 C++23
(gcc 13.3.0 + boost 1.87.0)
結果
WA  
実行時間 -
コード長 1,993 bytes
コンパイル時間 2,720 ms
コンパイル使用メモリ 259,552 KB
実行使用メモリ 16,948 KB
最終ジャッジ日時 2024-09-29 15:15:25
合計ジャッジ時間 9,382 ms
ジャッジサーバーID
(参考情報)
judge4 / judge5
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 17 WA * 20
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int h,w;
cin >> h >> w;
vector<string> S(h);
for (auto &s: S) cin >> s;
vector<int> dp(w,0);
const int INF = 1e9;
for (int i = h-2; i >= 0; i--){
vector<int> ndp(w,INF);
vector<vector<pair<int,int>>> event(w);
for (int x = 0; x < w; x++){
int cost = dp[x];
event[max(0,x-cost)].push_back({cost,1});
}
for (int x = 0; x < w; x++){
event[x].push_back({x,0});
}
for (int x = 0; x < w; x++){
int cost = dp[x];
event[min(w-1,x+cost)].push_back({cost,-1});
}
multiset<int> ms;
ms.insert(INF);
for (int x = 0; x < w; x++){
for (auto [c,t] : event[x]){
if (t == 1) {
ms.insert(c);
} else if (t == 0){
if (S[i][c] == '#') continue;
ndp[c] = *ms.begin();
} else{
auto it = ms.find(c);
//
if (it != ms.end()) {
ms.erase(it);
} else{
assert (0);
}
}
}
}
for (int x = 1; x < w; x++){
ndp[x] = min(ndp[x],ndp[x-1]+1);
}
for (int x = w-2;x >= 0; x--){
ndp[x] = min(ndp[x],ndp[x+1]+1);
}
for (int x = 0;x < w; x++){
if (S[i][x] == '#'){
ndp[x] = INF;
}
if (i > 0 && S[i-1][x] != '.'){
ndp[x] = INF;
}
}
swap(dp,ndp);
}
for (auto a: dp){
cout << a << endl;
}
return 0;
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0