結果
| 問題 |
No.459 C-VS for yukicoder
|
| コンテスト | |
| ユーザー |
vjudge1
|
| 提出日時 | 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');
}
}
vjudge1