結果

問題 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);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~

ソースコード

diff #

#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');
	}
}
0