提出 #76473252


ソースコード 拡げる

#include <bits/stdc++.h>
using namespace std;
#define int ll
#define ll long long
#define pb emplace_back
#define pr pair<int,int>
#define mp make_pair
#define endl "\n"
inline int read()
{
	int x=0,f=1;char ch=getchar();
	while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
	while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
	return x*f;
}
void write(int x)
{
    if(x<0)putchar('-'),x=-x;
    if(x<10)putchar(x+'0');
    else write(x/10),putchar(x%10+'0');
}
int n,m,k;
int mm[505][505];
int s[505][505];
signed main(){
	n=read();
	m=read();
	k=read();
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			char a;
			cin>>a;
			mm[i][j]=(a-'0');
		} 
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++) s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+mm[i][j];
	}
	
	//for(int i=1;i<=n;i++){
	//	for(int j=1;j<=m;j++) cout<<s[i][j]<<" ";
	//	cout<<endl;
	//}
	
	int ans=0;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			for(int p=i;p<=n;p++){
				int l=j,r=m,mid,da1=INT_MIN,da2=INT_MIN;
				while(l<=r){
					mid=l+r>>1;
					int mq=s[p][mid]-s[p][j-1]-s[i-1][mid]+s[i-1][j-1];
					//cout<<"  "<<l<<' '<<r<<' '<<mid<<' '<<mq<<endl;
					if(mq>=k){
						if(mq==k) da1=mid;
						r=mid-1;
					}
					else l=mid+1;
				} //left
				l=j,r=m;
				while(l<=r){
					mid=l+r>>1;
					int mq=s[p][mid]-s[p][j-1]-s[i-1][mid]+s[i-1][j-1];
					//cout<<" 2  "<<p<<' '<<mid<<' '<<i<<' '<<j<<' '<<mq<<endl;
					if(mq<=k){
						if(mq==k) da2=mid;
						l=mid+1;
					}
					else r=mid-1;
				}//right
				//cout<<i<<' '<<j<<" "<<p<<' '<<da1<<" "<<da2<<endl;
				if(da1!=INT_MIN&&da2!=INT_MIN) ans+=(da2-da1+1);
			}
		}
	}
	cout<<ans; 
	return 0;
}


提出情報

提出日時
問題 D - Count Subgrid Sum = K
ユーザ Fireflies
言語 C++23 (GCC 15.2.0)
得点 425
コード長 1727 Byte
結果 AC
実行時間 2127 ms
メモリ 7564 KiB

コンパイルエラー

./Main.cpp: In function 'int main()':
./Main.cpp:51:46: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   51 |                                         mid=l+r>>1;
      |                                             ~^~
./Main.cpp:62:46: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   62 |                                         mid=l+r>>1;
      |                                             ~^~

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 425 / 425
結果
AC × 3
AC × 31
セット名 テストケース
Sample sample_01.txt, sample_02.txt, sample_03.txt
All 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
ケース名 結果 実行時間 メモリ
sample_01.txt AC 1 ms 3388 KiB
sample_02.txt AC 1 ms 3544 KiB
sample_03.txt AC 1 ms 3552 KiB
test_01.txt AC 1 ms 3472 KiB
test_02.txt AC 1 ms 3556 KiB
test_03.txt AC 1 ms 3392 KiB
test_04.txt AC 1 ms 3448 KiB
test_05.txt AC 930 ms 7564 KiB
test_06.txt AC 854 ms 7392 KiB
test_07.txt AC 754 ms 7384 KiB
test_08.txt AC 855 ms 7360 KiB
test_09.txt AC 861 ms 7392 KiB
test_10.txt AC 890 ms 7356 KiB
test_11.txt AC 853 ms 7440 KiB
test_12.txt AC 931 ms 7548 KiB
test_13.txt AC 1187 ms 7344 KiB
test_14.txt AC 855 ms 7356 KiB
test_15.txt AC 851 ms 7448 KiB
test_16.txt AC 1297 ms 7360 KiB
test_17.txt AC 2127 ms 7360 KiB
test_18.txt AC 873 ms 7524 KiB
test_19.txt AC 851 ms 7388 KiB
test_20.txt AC 1595 ms 7564 KiB
test_21.txt AC 1789 ms 7396 KiB
test_22.txt AC 882 ms 7524 KiB
test_23.txt AC 851 ms 7348 KiB
test_24.txt AC 1096 ms 7392 KiB
test_25.txt AC 854 ms 7448 KiB
test_26.txt AC 922 ms 7360 KiB
test_27.txt AC 885 ms 7408 KiB
test_28.txt AC 911 ms 7392 KiB