Submission #66776482


Source Code Expand

Copy
/*
for _ in range(int(input())):
h, w = map(int, input().split())
grid = [input() for _ in range(h)]
if h > w:
grid = [''.join(grid[i][j] for i in range(h)) for j in range(w)]
h, w = w, h
a = [[1 if ch == '#' else -1 for ch in row] for row in grid]
pre = [[0]*w for _ in range(h+1)]
for i in range(h):
for j in range(w):
pre[i+1][j] = pre[i][j] + a[i][j]
ans = 0
for u in range(h):
for d in range(u, h):
cnt = {0: 1}
s = 0
for j in range(w):
col_sum = pre[d+1][j] - pre[u][j]
s += col_sum
ans += cnt.get(s, 0)
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
/*
for _ in range(int(input())):
    h, w = map(int, input().split())
    grid = [input() for _ in range(h)]
    if h > w:
        grid = [''.join(grid[i][j] for i in range(h)) for j in range(w)]
        h, w = w, h
    a = [[1 if ch == '#' else -1 for ch in row] for row in grid]
    pre = [[0]*w for _ in range(h+1)]
    for i in range(h):
        for j in range(w):
            pre[i+1][j] = pre[i][j] + a[i][j]
    ans = 0
    for u in range(h):
        for d in range(u, h):
            cnt = {0: 1}
            s = 0
            for j in range(w):
                col_sum = pre[d+1][j] - pre[u][j]
                s += col_sum
                ans += cnt.get(s, 0)
                cnt[s] = cnt.get(s, 0) + 1
    print(ans)
*/
#include <bits/stdc++.h>
using namespace std;
int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int T;
    cin>>T;
    while(T--){
        int h,w;
        cin>>h>>w;
        vector<string> grid(h);
        for(int i=0;i<h;i++) cin>>grid[i];
        if(h>w){
            vector<string> t(w,string(h,' '));
            for(int i=0;i<h;i++) for(int j=0;j<w;j++) t[j][i]=grid[i][j];
            grid.swap(t);
            swap(h,w);
        }
        vector<vector<int>> a(h,vector<int>(w));
        for(int i=0;i<h;i++) for(int j=0;j<w;j++) a[i][j]=grid[i][j]=='#'?1:-1;
        vector<vector<int>> pre(h+1,vector<int>(w));
        for(int i=0;i<h;i++) for(int j=0;j<w;j++) pre[i+1][j]=pre[i][j]+a[i][j];
        long long ans=0;
        int MAX_S=h*w;
        int SIZE=2*MAX_S+1;
        int OFFSET=MAX_S;
        for(int u=0;u<h;u++){
            for(int d=u;d<h;d++){
                vector<int> cnt(SIZE);
                cnt[OFFSET]=1;
                int s=0;
                for(int j=0;j<w;j++){
                    int col_sum=pre[d+1][j]-pre[u][j];
                    s+=col_sum;
                    int idx=s+OFFSET;
                    ans+=cnt[idx];
                    cnt[idx]++;
                }
            }
        }
        cout<<ans<<"\n";
    }
    return 0;
}

Submission Info

Submission Time
Task F - Balanced Rectangles
User juten
Language C++ 20 (gcc 12.2)
Score 0
Code Size 2102 Byte
Status TLE
Exec Time 3311 ms
Memory 13064 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 525
Status
AC × 1
AC × 28
TLE × 15
Set Name Test Cases
Sample sample_01.txt
All hand_01.txt, hand_02.txt, hand_03.txt, hand_04.txt, sample_01.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
Case Name Status Exec Time Memory
hand_01.txt AC 20 ms 13056 KiB
hand_02.txt AC 6 ms 10476 KiB
hand_03.txt AC 20 ms 13064 KiB
hand_04.txt AC 6 ms 10240 KiB
sample_01.txt AC 1 ms 3448 KiB
test_01.txt AC 1 ms 3360 KiB
test_02.txt AC 1 ms 3448 KiB
test_03.txt AC 1 ms 3504 KiB
test_04.txt AC 1 ms 3520 KiB
test_05.txt AC 1 ms 3504 KiB
test_06.txt AC 1 ms 3408 KiB
test_07.txt AC 1 ms 3516 KiB
test_08.txt AC 2 ms 3596 KiB
test_09.txt AC 2 ms 3648 KiB
test_10.txt AC 3 ms 3584 KiB
test_11.txt AC 4 ms 3448 KiB
test_12.txt AC 15 ms 3504 KiB
test_13.txt AC 10 ms 3516 KiB
test_14.txt AC 7 ms 9296 KiB
test_15.txt AC 13 ms 9356 KiB
test_16.txt TLE 3311 ms 8256 KiB
test_17.txt TLE 3311 ms 8360 KiB
test_18.txt TLE 3311 ms 8372 KiB
test_19.txt TLE 3311 ms 8268 KiB
test_20.txt AC 15 ms 3456 KiB
test_21.txt TLE 3311 ms 8356 KiB
test_22.txt TLE 3311 ms 7360 KiB
test_23.txt TLE 3311 ms 8388 KiB
test_24.txt TLE 3311 ms 8360 KiB
test_25.txt TLE 3311 ms 6516 KiB
test_26.txt AC 848 ms 4564 KiB
test_27.txt AC 2238 ms 8116 KiB
test_28.txt AC 348 ms 5596 KiB
test_29.txt AC 1269 ms 6424 KiB
test_30.txt AC 2187 ms 8116 KiB
test_31.txt TLE 3311 ms 7572 KiB
test_32.txt AC 1045 ms 5808 KiB
test_33.txt TLE 3311 ms 8312 KiB
test_34.txt TLE 3311 ms 8356 KiB
test_35.txt TLE 3311 ms 8316 KiB
test_36.txt TLE 3311 ms 8308 KiB
test_37.txt TLE 3311 ms 8316 KiB
test_38.txt AC 1225 ms 8044 KiB


2025-06-14 (Sat)
22:45:36 +09:00