Submission #4907150


Source Code Expand

#include<iostream>
#include<algorithm>
using namespace std;
long H,W;
int N,M;
string s[1000];
int sum[1001][1001];
int a[2002][2002];
main()
{
	cin>>H>>W>>N>>M;
	for(int i=0;i<N;i++)
	{
		cin>>s[i];
		for(int j=0;j<M;j++)sum[i+1][j+1]=s[i][j]=='#';
	}
	for(int i=0;i<=N;i++)
	{
		for(int j=0;j<=M;j++)
		{
			sum[i][j]+=(j>0?sum[i][j-1]:0)+(i>0?sum[i-1][j]:0)-(i>0&&j>0?sum[i-1][j-1]:0);
		}
	}
	if(sum[N][M]==0)
	{
		cout<<0<<endl;
		return 0;
	}
	if(H<2*N&&W<2*M)
	{
		long cnt=0;
		for(int i=0;i<H;i++)
		{
			for(int j=0;j<W;j++)
			{
				int x1=max(i-(H-N),0L),y1=max(j-(W-M),0L),x2=min(i+1,N),y2=min(j+1,M);
				cnt+=a[i][j]=sum[x2][y2]-sum[x1][y2]-sum[x2][y1]+sum[x1][y1]>0;
			}
		}
		cout<<cnt<<endl;
	}
	else
	{
		long cnt=2*N*2*M;
		for(int i=0;i<2*N;i++)
		{
			for(int j=0;j<2*M;j++)
			{
				int x1=max(i-N,0),y1=max(j-M,0),x2=min(i+1,N),y2=min(j+1,M);
				cnt-=a[i][j]=sum[x2][y2]-sum[x1][y2]-sum[x2][y1]+sum[x1][y1]>0;
			}
		}
		int id=0;
		while(sum[id+1][M]==0)id++;
		cnt+=(W-2*M)*id;
		id=N;
		while(sum[N][M]-sum[id-1][M]==0)id--;
		cnt+=(W-2*M)*(N-id);
		id=0;
		while(sum[N][id+1]==0)id++;
		cnt+=(H-2*N)*id;
		id=M;
		while(sum[N][M]-sum[N][id-1]==0)id--;
		cnt+=(H-2*N)*(M-id);
		cout<<H*W-cnt<<endl;
	}
}

Submission Info

Submission Time
Task D - ハンコ
User kotatsugame
Language C++14 (GCC 5.4.1)
Score 500
Code Size 1298 Byte
Status AC
Exec Time 53 ms
Memory 20864 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 500 / 500
Status
AC × 5
AC × 28
Set Name Test Cases
Sample sample-01.txt, sample-02.txt, sample-03.txt, sample-04.txt, sample-05.txt
All 01.txt, 02.txt, 03.txt, 04.txt, 05.txt, 06.txt, 07.txt, 08.txt, 09.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, 17.txt, 18.txt, 19.txt, 20.txt, 21.txt, 22.txt, 23.txt, sample-01.txt, sample-02.txt, sample-03.txt, sample-04.txt, sample-05.txt
Case Name Status Exec Time Memory
01.txt AC 24 ms 12928 KB
02.txt AC 8 ms 12032 KB
03.txt AC 5 ms 9728 KB
04.txt AC 38 ms 14464 KB
05.txt AC 3 ms 7552 KB
06.txt AC 37 ms 14208 KB
07.txt AC 3 ms 3200 KB
08.txt AC 6 ms 18432 KB
09.txt AC 2 ms 2304 KB
10.txt AC 16 ms 16896 KB
11.txt AC 3 ms 5504 KB
12.txt AC 6 ms 6272 KB
13.txt AC 28 ms 17664 KB
14.txt AC 2 ms 2304 KB
15.txt AC 5 ms 18304 KB
16.txt AC 15 ms 8576 KB
17.txt AC 5 ms 7680 KB
18.txt AC 6 ms 11776 KB
19.txt AC 4 ms 3072 KB
20.txt AC 29 ms 15232 KB
21.txt AC 3 ms 2688 KB
22.txt AC 10 ms 8704 KB
23.txt AC 53 ms 20864 KB
sample-01.txt AC 2 ms 2304 KB
sample-02.txt AC 2 ms 2304 KB
sample-03.txt AC 2 ms 2304 KB
sample-04.txt AC 2 ms 2304 KB
sample-05.txt AC 2 ms 2304 KB