結果
問題 | No.459 C-VS for yukicoder |
ユーザー |
![]() |
提出日時 | 2025-06-28 12:10:57 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,492 bytes |
コンパイル時間 | 1,677 ms |
コンパイル使用メモリ | 169,244 KB |
実行使用メモリ | 7,848 KB |
最終ジャッジ日時 | 2025-06-28 12:11:08 |
合計ジャッジ時間 | 10,276 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | WA * 3 |
other | WA * 58 |
コンパイルメッセージ
main.cpp: In function ‘int main()’: main.cpp:8:16: warning: ignoring return value of ‘FILE* freopen(const char*, const char*, FILE*)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 8 | freopen("tetris.in","r",stdin); | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~ main.cpp:9:16: warning: ignoring return value of ‘FILE* freopen(const char*, const char*, FILE*)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 9 | freopen("tetris.out","w",stdout); | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
ソースコード
#include<bits/stdc++.h> using namespace std; int h,w,n,a[10004],c[30004],ans[30004][3],vis[10004]; struct node{int x,y;}; string s;vector<node>b[10004]; int main() { freopen("tetris.in","r",stdin); freopen("tetris.out","w",stdout); cin>>h>>w>>n; for(int i=1;i<=h;i++) { cin>>s;s="%"+s; for(int j=1;j<=w;j++)if(s[j]=='#')a[j]++; } for(int i=1;i<=n;i++) { cin>>c[i];c[i]++; for(int j=0;j<3;j++)b[c[i]+j].push_back((node){i,j}); } for(int i=1;i<=w;i++) { if(a[i]<b[i].size())vis[i]=1; else if(a[i]<b[i].size()*2) { for(int j=0;j<b[i].size();j++) { if(j<a[i]%b[i].size())ans[b[i][j].x][b[i][j].y]=2; else ans[b[i][j].x][b[i][j].y]=1; } } else if(a[i]<b[i].size()*3) { for(int j=0;j<b[i].size();j++) { if(j<a[i]%b[i].size())ans[b[i][j].x][b[i][j].y]=3; else ans[b[i][j].x][b[i][j].y]=2; } } else for(int j=0;j<b[i].size();j++)ans[b[i][j].x][b[i][j].y]=3; } for(int i=1;i<=n;i++)if(vis[c[i]]&&vis[c[i]+1]&&vis[c[i]+2]) { if(a[c[i]]>=a[c[i]+1]&&a[c[i]]>=a[c[i]+2]){ans[i][0]=1;a[c[i]]--;} else if(a[c[i]+1]>=a[c[i]+2]){ans[i][1]=1;a[c[i]+1]--;} else{ans[i][2]=1;a[c[i]+2]--;} } for(int i=1,cnt;i<=w;i++)if(vis[i]&&a[i]) { cnt=0; for(int j=0;j<b[i].size();j++)if(!ans[b[i][j].x][b[i][j].y]) { ans[b[i][j].x][b[i][j].y]=1; cnt++;if(cnt==a[i])break; } } for(int i=1;i<=n;i++)for(int j=0;j<3;j++) { for(int k=0;k<3;k++) { if(ans[i][k]>j)putchar('#'); else putchar('.'); } putchar('\n'); } }