結果

問題 No.3410 Happiest Art
コンテスト
ユーザー 👑 tails
提出日時 2025-12-17 05:41:10
言語 cLay
(20241019-1 + boost 1.89.0)
結果
AC  
実行時間 573 ms / 4,000 ms
コード長 1,304 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 2,645 ms
コンパイル使用メモリ 193,844 KB
実行使用メモリ 47,820 KB
最終ジャッジ日時 2025-12-17 05:41:19
合計ジャッジ時間 7,089 ms
ジャッジサーバーID
(参考情報)
judge4 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 44
権限があれば一括ダウンロードができます
コンパイルメッセージ
main.cpp: In function ‘int main()’:
main.cpp:131:7: warning: ignoring return value of ‘ssize_t read(int, void*, size_t)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
  131 |   read(0,rbuf,1<<21);
      |   ~~~~^~~~~~~~~~~~~~

ソースコード

diff #
raw source code

ull r[100][100];
if(1){
	Rand g;
	rep(y,100){
		rep(x,100){
			r[y][x]=(ull)g.get()<<32^g.get();
		}
	}
}

char rbuf[1<<21],*rp=rbuf;
read(0,rbuf,1<<21);
auto rd=[&](){int _v=0,_c;while(_c=*rp++-48,_c>=0)_v=_v*10+_c;return _v;};

ll n=rd();
ll u=rd();
ll h=rd();
ll w=rd();
rp+=(2+h*(w+1))*n;

ll best_v=-1;
char* best_s=0;

unordered_map<ull,ll> m;
rrep(i,n){
	*rp=0;
	rp-=h*(w+1);
	char*p=rp;
	ull b=0;
	rep(y,h){
		rep(x,w){
			if(*p++=='#'){
				b^=r[y][x];
			}
		}
		++p;
	}
	if(i<u){
		ll v=++m[b];
		if(best_v<v){
			best_v=v;
			best_s=rp;
		}
	}else{
		--m[b];
	}
	if(rp[-2]=='1'){
		ll by=-1;
		ll bx=-1;
		rep(y,h){
			rep(x,w){
				ull b1=b^r[y][x];
				if(i<u){
					ll v=++m[b1];
					if(best_v<v){
						best_v=v;
						best_s=rp;
						by=y;
						bx=x;
					}
				}else{
					--m[b1];
				}
			}
		}
		if(by>=0){
			best_s[by*(w+1)+bx]^='.'^'#';
		}
	}
	rp-=2;
}

if(best_v<0){
	char sbuf[10101];
	best_v=-200;
	best_s=sbuf;
	rp+=2;
	rep(y,h){
		rep(x,w){
			rp[y*(w+1)+x]='.';
		}
	}
	ull b=0;
	unsigned t=0;
	while(1){
		ll v=m[b];
		if(best_v<v){
			best_v=v;
			memcpy(best_s,rp,h*(w+1)+1);
			if(best_v==0){
				break;
			}
		}
		unsigned c=__builtin_ctz(++t);
		ll y=c/w;
		ll x=c%w;
		if(y>=h){
			break;
		}
		b^=r[y][x];
		rp[y*(w+1)+x]^='.'^'#';
	}
}

wt(best_v);
wtN(best_s);
0