Submission #588294


Source Code Expand

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef vector<int> V;
typedef vector<V> VV;
typedef vector<VV> VVV;

#define sum(_r1,_r2,_c1,_c2,_wa) (_wa[_r2][_c2]+_wa[_r1-1][_c1-1]-_wa[_r2][_c1-1]-_wa[_r1-1][_c2])
#define sum2(_r1,_r2,_c1,_c2,_wa,i) (_wa[_r2][_c2][i]+_wa[_r1-1][_c1-1][i]-_wa[_r2][_c1-1][i]-_wa[_r1-1][_c2][i])

int main() {
    int R,C,K;
    cin>>R>>C>>K;
    vector<string> S(R);
    for(auto& it : S)cin>>it;
    VV wa(R+1,V(C+1,0));
    VVV num(R+1,VV(C+1,V(10,0)));

    {
        for(int r = 0; r < R; r++)
            for(int c = 0; c < C; c++){
                wa[r+1][c+1]=S[r][c]-'0';
                num[r+1][c+1][wa[r+1][c+1]]=1;
            }
        for(int r = 1; r <= R; r++)
            for(int c = 1; c <= C; c++){
                wa[r][c]+=wa[r][c-1]+wa[r-1][c]-wa[r-1][c-1];
                for(int i = 0; i < 10; i++){
                    num[r][c][i]+=num[r][c-1][i]+num[r-1][c][i]-num[r-1][c-1][i];
                }
            }
    }
    LL res=0;
    for(int r1 = 1; r1 <= R; r1++)
        for(int r2 = r1+2; r2 <= R; r2++)
            for(int c1 = 1; c1 <= C-2; c1++){
                int c2=c1+2;
                if(sum(r1,r2,c1,c2,wa)-K<=0){
                    if(sum(r1,r2,c1,C,wa)-K<=0)break;;
                    int bottom=c1+2,top=C;
                    while(top-bottom>1){
                        int m=(top+bottom)>>1;
                        if(sum(r1,r2,c1,m,wa)-K>=0)top=m;
                        else bottom=m;
                    }
                    c2=top;
                }
                for(; c2 <= C; c2++){
                    int sa=sum(r1,r2,c1,c2,wa)-K;
                    if(sa>=10)break;
                    res+=sum2(r1+1,r2-1,c1+1,c2-1,num,sa);
                }
            }
    cout<<res<<endl;
    return 0;
}

Submission Info

Submission Time
Task H - 穴あきケーキ
User btk15049
Language C++11 (GCC 4.9.2)
Score 100
Code Size 1873 Byte
Status AC
Exec Time 919 ms
Memory 10300 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 100 / 100
Status
AC × 4
AC × 27
Set Name Test Cases
Sample sample-01.txt, sample-02.txt, sample-03.txt, sample-04.txt
All 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
Case Name Status Exec Time Memory
sample-01.txt AC 28 ms 924 KB
sample-02.txt AC 27 ms 924 KB
sample-03.txt AC 28 ms 920 KB
sample-04.txt AC 26 ms 788 KB
test-01.txt AC 28 ms 1044 KB
test-02.txt AC 27 ms 1048 KB
test-03.txt AC 28 ms 1044 KB
test-04.txt AC 46 ms 1820 KB
test-05.txt AC 54 ms 2648 KB
test-06.txt AC 34 ms 2448 KB
test-07.txt AC 83 ms 3124 KB
test-08.txt AC 110 ms 3128 KB
test-09.txt AC 38 ms 3172 KB
test-10.txt AC 136 ms 3212 KB
test-11.txt AC 210 ms 5528 KB
test-12.txt AC 90 ms 5536 KB
test-13.txt AC 368 ms 7376 KB
test-14.txt AC 423 ms 6576 KB
test-15.txt AC 571 ms 7736 KB
test-16.txt AC 665 ms 10264 KB
test-17.txt AC 119 ms 10164 KB
test-18.txt AC 919 ms 10280 KB
test-19.txt AC 489 ms 10164 KB
test-20.txt AC 215 ms 10264 KB
test-21.txt AC 663 ms 10168 KB
test-22.txt AC 113 ms 10260 KB
test-23.txt AC 881 ms 10296 KB
test-24.txt AC 141 ms 10292 KB
test-25.txt AC 93 ms 10164 KB
test-26.txt AC 851 ms 10164 KB
test-27.txt AC 708 ms 10300 KB