結果

問題 No.459 C-VS for yukicoder
コンテスト
ユーザー vjudge1
提出日時 2025-06-28 12:10:57
言語 C++14
(gcc 15.2.0 + boost 1.90.0)
コンパイル:
g++-15 -O2 -lm -std=c++14 -Wuninitialized -DONLINE_JUDGE -o a.out _filename_
実行:
./a.out
結果
WA  
実行時間 -
コード長 1,492 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 925 ms
コンパイル使用メモリ 190,464 KB
実行使用メモリ 9,428 KB
最終ジャッジ日時 2026-07-12 22:31:48
合計ジャッジ時間 8,350 ms
ジャッジサーバーID
(参考情報)
judge3_0 / judge2_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample WA * 3
other WA * 58
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

#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