CSES - Leirikisa 1 - Results
Submission details
Task:ratar
Sender:zxc
Submission time:2016-07-27 14:51:26 +0300
Language:C++
Status:READY
Result:0
Feedback
groupverdictscore
#10
Test results
testverdicttime
#1ACCEPTED0.06 sdetails
#2ACCEPTED0.06 sdetails
#3ACCEPTED0.06 sdetails
#4ACCEPTED0.05 sdetails
#5ACCEPTED0.06 sdetails
#6ACCEPTED0.05 sdetails
#7ACCEPTED0.06 sdetails
#8ACCEPTED0.26 sdetails
#9--details
#10--details
#11--details
#12--details
#13--details

Code

#include <bits/stdc++.h>
using namespace std;
int t[55][55];
int getSum(int x1, int y1, int x2, int y2) {
    return t[x2+1][y2+1] - t[x2+1][y1] - t[x1][y2+1] + t[x1][y1];
}
map<int, int> st1[55][55];
map<int, int> st2[55][55];
map<int, int> st3[55][55];
map<int, int> st4[55][55];
int main() {
    int n;
    cin>>n;
    for(int i = 0; i < n ;++i) {
	for(int j = 0; j < n; ++j) {
	    cin>>t[i+1][j+1];
	    t[i+1][j+1] += t[i][j+1] + t[i+1][j] - t[i][j];
	    //cout<<t[i+1][j+1]<<' ';
	}
	//cout<<'\n';
    }
    for(int i = 0; i < n; ++i) {
	for(int j = 0; j < n ;++j) {
	    for(int k = i; k < n; ++k) {
		for(int l = j; l < n; ++l) {
		    int sum = getSum(i, j, k, l);
		    st1[i][j][sum]++;
		    st2[k+1][j][sum]++;//}}]++;
		    st3[k+1][l+1][sum]++;
		    st4[i][l+1][sum]++;
		}
	    }
	}
    }
    long long ans = 0;
    for(int i = 0; i < n; ++i) {
	for(int j = 0; j < n ;++j) {
	 //   cout<<getSum(i, j,i , j)<<' ';// st1[{getSum(i, j, i, j), {i, j}}]<<' ';
	    for(int k = i; k < n; ++k) {
		for(int l = j; l < n; ++l) {
		    int sum = getSum(i, j, k, l);
		    ans += st3[i][j][sum];
		    ans += st4[k+1][j][sum];
		    ans += st1[k+1][l+1][sum];
		    ans +=st2[i][l+1][sum];
		    continue;

/*
		    ans += st1[{sum, {k+1, l+1}}];
		    ans += st2[{sum, {i, l+1}}];
		    ans += st3[{sum, {i, j}}];
		    ans += st4[{sum, {k+1, j}}];
		    */
		}
	    }
	}
//	cout<<'\n';
    }
    cout<<ans/2<<'\n';
}

Test details

Test 1

Verdict: ACCEPTED

input
3
1 2 3
2 3 4
3 4 8

correct output
7

user output
7

Test 2

Verdict: ACCEPTED

input
4
-1 -1 -1 -1
1 2 3 4
1 2 3 4
1 2 3 4

correct output
10

user output
10

Test 3

Verdict: ACCEPTED

input
5
-1 -1 -1 -1 -1
-2 -2 -2 -2 -2
-3 -3 -3 -3 -3
-4 -4 -4 -4 -4
...

correct output
36

user output
36

Test 4

Verdict: ACCEPTED

input
2
1 -1
-1 1

correct output
2

user output
2

Test 5

Verdict: ACCEPTED

input
5
1 -1 1 -1 1
-1 1 -1 1 -1
1 -1 1 -1 1
-1 1 -1 1 -1
...

correct output
380

user output
380

Test 6

Verdict: ACCEPTED

input
10
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 1 0
0 1 1 0 0 0 0 1 1 0
...

correct output
7354

user output
7354

Test 7

Verdict: ACCEPTED

input
10
420 425 490 727 888 391 514 82...

correct output
5

user output
5

Test 8

Verdict: ACCEPTED

input
31
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...

correct output
667480

user output
667480

Test 9

Verdict:

input
41
475 533 -726 -189 401 -389 667...

correct output
17456

user output
(empty)

Test 10

Verdict:

input
49
495 -512 159 -874 751 -817 567...

correct output
48443

user output
(empty)

Test 11

Verdict:

input
49
521 -51 -778 -977 955 -172 695...

correct output
39082

user output
(empty)

Test 12

Verdict:

input
50
500 500 500 500 500 500 500 50...

correct output
4236645

user output
(empty)

Test 13

Verdict:

input
50
933 -493 -881 936 -889 -922 -5...

correct output
37917

user output
(empty)