Submission #68805451


Source Code Expand

n, m, k = map(int,input().split())
s = [input() for i in range(n)]

# 上に何マス続いているか? 
h = [[0] * m for i in range(n)]
for j in range(m):
	for i in range(n):
		if s[i][j] == '#':
			h[i][j] = 0
		else:
			if i-1 < 0:
				h[i][j] = 1
			else:
				h[i][j] = h[i-1][j] + 1

# 縦 k 以下, 横 l 以下の長方形であって面積が K 以下のものの個数
r = [[0] * (m+1) for i in range(n+1)]
for i in range(1, n+1):
	for j in range(1, m+1):
		if i * j <= k:
			r[i][j] += 1

for i in range(n+1):
	for j in range(m):
		r[i][j+1] += r[i][j]

for i in range(n):
	for j in range(m+1):
		r[i+1][j] += r[i][j]

# r[i][j] の寄与を imos 法で求める
c = [[0] * (m+2) for i in range(n+1)]
for i in range(n):
	st = [-1] # ブロックの高さ
	ind = [m] # ブロックが始まる y 座標
	for j in range(m-1,-1,-1):
		while st[-1] >= h[i][j]:
			x = st.pop()
			c[x][ind[-1]-j] += 1 # 紫のブロック
			ind.pop()
			c[x][ind[-1]-j] -= 1 # 橙のブロック
		c[h[i][j]][0] -= 1 # 紫のブロック
		c[h[i][j]][ind[-1]-j] += 1 # 橙のブロック
		st.append(h[i][j])
		ind.append(j)
	while st[-1] >= 0:
		x = st.pop()
		c[x][ind[-1]+1] += 1 # 紫のブロック
		ind.pop()
		c[x][ind[-1]+1] -= 1 # 橙のブロック

for i in range(n+1):
	for j in range(m+1):
		c[i][j+1] += c[i][j]

ans = 0
for i in range(n+1):
	for j in range(m+1):
		ans += c[i][j] * r[i][j]

print(ans)

Submission Info

Submission Time
Task F - kirinuki
User shobonvip
Language Python (PyPy 3.10-v7.3.12)
Score 550
Code Size 1468 Byte
Status AC
Exec Time 832 ms
Memory 349608 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 550 / 550
Status
AC × 3
AC × 72
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt
All hand_01.txt, hand_02.txt, hand_03.txt, hand_04.txt, hand_05.txt, hand_06.txt, hand_07.txt, hand_08.txt, sample_01.txt, sample_02.txt, sample_03.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt, test_34.txt, test_35.txt, test_36.txt, test_37.txt, test_38.txt, test_39.txt, test_40.txt, test_41.txt, test_42.txt, test_43.txt, test_44.txt, test_45.txt, test_46.txt, test_47.txt, test_48.txt, test_49.txt, test_50.txt, test_51.txt, test_52.txt, test_53.txt, test_54.txt, test_55.txt, test_56.txt, test_57.txt, test_58.txt, test_59.txt, test_60.txt, test_61.txt
Case Name Status Exec Time Memory
hand_01.txt AC 462 ms 207464 KiB
hand_02.txt AC 444 ms 198944 KiB
hand_03.txt AC 443 ms 198976 KiB
hand_04.txt AC 483 ms 207224 KiB
hand_05.txt AC 450 ms 206404 KiB
hand_06.txt AC 436 ms 197752 KiB
hand_07.txt AC 437 ms 198208 KiB
hand_08.txt AC 482 ms 207312 KiB
sample_01.txt AC 55 ms 76344 KiB
sample_02.txt AC 55 ms 76364 KiB
sample_03.txt AC 55 ms 76420 KiB
test_01.txt AC 55 ms 76516 KiB
test_02.txt AC 54 ms 76400 KiB
test_03.txt AC 394 ms 213708 KiB
test_04.txt AC 431 ms 200708 KiB
test_05.txt AC 832 ms 349608 KiB
test_06.txt AC 379 ms 213512 KiB
test_07.txt AC 436 ms 199744 KiB
test_08.txt AC 445 ms 199476 KiB
test_09.txt AC 668 ms 242232 KiB
test_10.txt AC 481 ms 209952 KiB
test_11.txt AC 446 ms 200568 KiB
test_12.txt AC 381 ms 208672 KiB
test_13.txt AC 460 ms 206484 KiB
test_14.txt AC 508 ms 207820 KiB
test_15.txt AC 716 ms 277564 KiB
test_16.txt AC 532 ms 207876 KiB
test_17.txt AC 506 ms 206828 KiB
test_18.txt AC 511 ms 207292 KiB
test_19.txt AC 507 ms 206496 KiB
test_20.txt AC 488 ms 208000 KiB
test_21.txt AC 683 ms 271584 KiB
test_22.txt AC 567 ms 212876 KiB
test_23.txt AC 458 ms 200040 KiB
test_24.txt AC 386 ms 214892 KiB
test_25.txt AC 434 ms 198752 KiB
test_26.txt AC 432 ms 199316 KiB
test_27.txt AC 519 ms 241820 KiB
test_28.txt AC 462 ms 210280 KiB
test_29.txt AC 426 ms 198884 KiB
test_30.txt AC 399 ms 208060 KiB
test_31.txt AC 383 ms 205880 KiB
test_32.txt AC 436 ms 200724 KiB
test_33.txt AC 695 ms 244492 KiB
test_34.txt AC 472 ms 207840 KiB
test_35.txt AC 444 ms 199032 KiB
test_36.txt AC 386 ms 208364 KiB
test_37.txt AC 512 ms 206544 KiB
test_38.txt AC 507 ms 207192 KiB
test_39.txt AC 822 ms 261792 KiB
test_40.txt AC 626 ms 221004 KiB
test_41.txt AC 505 ms 206988 KiB
test_42.txt AC 504 ms 208428 KiB
test_43.txt AC 545 ms 198360 KiB
test_44.txt AC 574 ms 206696 KiB
test_45.txt AC 706 ms 271240 KiB
test_46.txt AC 539 ms 197216 KiB
test_47.txt AC 555 ms 207776 KiB
test_48.txt AC 377 ms 213632 KiB
test_49.txt AC 427 ms 205284 KiB
test_50.txt AC 418 ms 200472 KiB
test_51.txt AC 624 ms 290296 KiB
test_52.txt AC 428 ms 198700 KiB
test_53.txt AC 428 ms 198760 KiB
test_54.txt AC 456 ms 199360 KiB
test_55.txt AC 438 ms 199116 KiB
test_56.txt AC 505 ms 207728 KiB
test_57.txt AC 446 ms 198748 KiB
test_58.txt AC 453 ms 199544 KiB
test_59.txt AC 442 ms 199368 KiB
test_60.txt AC 508 ms 207548 KiB
test_61.txt AC 445 ms 198904 KiB