結果
問題 | No.2657 Falling Block Game |
ユーザー | amano_hina |
提出日時 | 2024-03-01 22:52:37 |
言語 | C++14 (gcc 12.3.0 + boost 1.83.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 2,777 bytes |
コンパイル時間 | 1,744 ms |
コンパイル使用メモリ | 179,684 KB |
実行使用メモリ | 17,384 KB |
最終ジャッジ日時 | 2024-09-29 14:41:26 |
合計ジャッジ時間 | 4,756 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 3 ms
9,516 KB |
testcase_01 | AC | 3 ms
9,160 KB |
testcase_02 | AC | 3 ms
9,144 KB |
testcase_03 | AC | 3 ms
8,944 KB |
testcase_04 | AC | 11 ms
8,900 KB |
testcase_05 | WA | - |
testcase_06 | AC | 68 ms
14,456 KB |
testcase_07 | AC | 181 ms
17,384 KB |
testcase_08 | AC | 155 ms
9,408 KB |
testcase_09 | AC | 60 ms
8,904 KB |
testcase_10 | WA | - |
testcase_11 | WA | - |
testcase_12 | WA | - |
testcase_13 | WA | - |
testcase_14 | WA | - |
testcase_15 | WA | - |
testcase_16 | WA | - |
testcase_17 | AC | 21 ms
10,908 KB |
testcase_18 | WA | - |
testcase_19 | WA | - |
testcase_20 | WA | - |
testcase_21 | WA | - |
testcase_22 | WA | - |
testcase_23 | WA | - |
testcase_24 | WA | - |
testcase_25 | WA | - |
testcase_26 | WA | - |
testcase_27 | WA | - |
testcase_28 | WA | - |
testcase_29 | WA | - |
testcase_30 | AC | 53 ms
9,420 KB |
testcase_31 | AC | 53 ms
9,028 KB |
testcase_32 | AC | 52 ms
9,028 KB |
testcase_33 | AC | 53 ms
9,160 KB |
testcase_34 | AC | 52 ms
9,024 KB |
testcase_35 | AC | 52 ms
9,000 KB |
testcase_36 | AC | 54 ms
9,000 KB |
testcase_37 | AC | 53 ms
8,960 KB |
testcase_38 | AC | 53 ms
8,896 KB |
testcase_39 | AC | 53 ms
8,872 KB |
ソースコード
#include<bits/stdc++.h> //#include<cstdio> using namespace std; //#pragma GCC optimize("Ofast") //#pragma GCC optimize ("unroll-loops") //#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native") //mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count()); //#define int long long typedef long long ll; #define F first #define S second #define pb emplace_back string s[100005]; vector<int> v[100005]; int rea[100005],ans[100005]; int n,m; bool vis[100005]; /*bool cmp(pair<pair<int,int>,int> p1,pair<pair<int,int>,int> p2) { if(p1.F.F!=p2.F.S) return p1.F.F<p2.F.F; else { if(abs(p1.S)!=abs(p2.S)) return abs(p1.S)<abs(p2.S); else return p1.F.S<p2.F.S; } }*/ void bfs(int x) { priority_queue<pair<pair<int,pair<int,int>>,int>,vector<pair<pair<int,pair<int,int>>,int>>,greater<pair<pair<int,pair<int,int>>,int>>> pq; for(int i=0;i<=m;i++) vis[i]=0; for(int i=0;i<=m;i++) { for(auto j:v[i]) if(s[x][j]!='#') { //cout<<"?? "<<j<<'\n'; pq.push(make_pair(make_pair(i,make_pair(0,0)),j)); } } //cout<<x<<'\n'; while(!pq.empty()) { pair<pair<int,pair<int,int>>,int> p=pq.top(); pq.pop(); //cout<<"rtny ujunyt "<<p.F.F<<' '<<p.F.S<<' '<<p.S<<'\n'; if(!vis[p.S]) { //cout<<p.F.S<<' '; ans[p.S]=p.F.F; vis[p.S]=1; if(p.F.S.S==0) { if(p.S+1<m&&s[x][p.S+1]!='#') pq.push(make_pair(make_pair(max(p.F.F,1),make_pair(1,1)),p.S+1)); if(p.S-1>=0&&s[x][p.S-1]!='#') pq.push(make_pair(make_pair(max(p.F.F,1),make_pair(1,-1)),p.S-1)); } else if(p.F.S.S>0) { if(p.S+1<m&&s[x][p.S+1]!='#') pq.push(make_pair(make_pair(max(p.F.F,p.F.S.S+1),make_pair(p.F.S.S+1,p.F.S.S+1)),p.S+1)); } else { if(p.S-1>=0&&s[x][p.S-1]!='#') pq.push(make_pair(make_pair(max(p.F.F,-p.F.S.S+1),make_pair(-p.F.S.S+1,p.F.S.S-1)),p.S-1)); } } } //cout<<'\n'; } signed main() { cin.tie(0); ios_base::sync_with_stdio(0); cin>>n>>m; for(int i=0;i<n;i++) cin>>s[i]; for(int i=0;i<m;i++) ans[i]=0; for(int i=0;i<m;i++) v[0].pb(i); for(int i=n-2;i>=0;i--) { //cout<<i<<endl; for(int j=0;j<=m;j++) ans[j]=-1; bfs(i); for(int j=0;j<=m;j++) v[j].clear(); for(int j=0;j<m;j++) if(ans[j]>=0) { //cout<<"? "<<j<<'\n'; v[ans[j]].pb(j); } /*for(int i=0;i<m;i++) cout<<ans[i]<<' '; cout<<'\n';*/ } for(int i=0;i<m;i++) cout<<ans[i]<<'\n'; } /* 5 5 ..... #.#.. ..##. ##... ..... */