結果
問題 |
No.459 C-VS for yukicoder
|
ユーザー |
![]() |
提出日時 | 2025-06-23 11:47:32 |
言語 | C++17(clang) (17.0.6 + boost 1.87.0) |
結果 |
RE
|
実行時間 | - |
コード長 | 929 bytes |
コンパイル時間 | 2,546 ms |
コンパイル使用メモリ | 171,224 KB |
実行使用メモリ | 7,848 KB |
最終ジャッジ日時 | 2025-06-23 11:47:39 |
合計ジャッジ時間 | 6,270 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 55 RE * 3 |
ソースコード
#include <bits/stdc++.h> using namespace std; #define ll long long const int N=1e4+5; int h,w,n; char ch; int a[N],p[N]; vector<int> b[N]; int c[N][3]; int main(){ // freopen("tetris.in","r",stdin); // freopen("tetris.out","w",stdout); cin>>h>>w>>n; for (int i=1;i<=h;i++){ for (int j=1;j<=w;j++){ cin>>ch; if(ch=='#') a[j]++; } } for (int i=1;i<=n;i++){ cin>>p[i]; p[i]++; b[p[i]].push_back(i); } for (int i=1;i<=w;i++){ for (int j:b[i]){ if(a[i]) c[j][0]++,a[i]--; else if(a[i+1]&&i+1<=w) c[j][1]++,a[i+1]--; else if(i+2<=w) c[j][2]++,a[i+2]--; } } for (int i=1;i<=w;i++){ for (int j:b[i]){ for (int k=0;k<3;k++){ if(i+k>w) continue; int add=min(3-c[j][k],a[i+k]); c[j][k]+=add; a[i+k]-=add; } } } for (int i=1;i<=n;i++){ for (int j=1;j<=3;j++){ for (int k=0;k<3;k++){ if(j<=c[i][k]) cout<<'#'; else cout<<'.'; } cout<<'\n'; } } return 0; }