File tree 3 files changed +92
-0
lines changed 3 files changed +92
-0
lines changed Original file line number Diff line number Diff line change
1
+ #include < bits/stdc++.h>
2
+
3
+ using namespace std ;
4
+ const int N = 1e6 + 5 , OO = 0x3f3f3f3f , MOD = 1000000007 ;
5
+ const double EPS = 0.000000001 ;
6
+
7
+ int n;
8
+ int A[N];
9
+ long long sum, bestSum;
10
+
11
+ int main (){
12
+ // freopen("i.in", "rt", stdin);
13
+ // freopen("o.out", "wt", stdout);
14
+ scanf (" %d" , &n);
15
+ for (int i = 0 ; i < n ; ++i)
16
+ scanf (" %d" , A+i);
17
+ for (int i = 0 ; i < n ; ++i){
18
+ sum += A[i];
19
+ sum = max (sum, 0ll );
20
+ bestSum = max (bestSum, sum);
21
+ }
22
+ printf (" %lld\n " , bestSum);
23
+ return 0 ;
24
+ }
Original file line number Diff line number Diff line change
1
+ #include < bits/stdc++.h>
2
+
3
+ using namespace std ;
4
+ const int N = 1e2 + 5 , OO = 0x3f3f3f3f , MOD = 1000000007 ;
5
+ const double EPS = 0.000000001 ;
6
+
7
+ int n, m;
8
+ int A[N][N];
9
+ long long bestSum;
10
+
11
+ int main (){
12
+ // freopen("i.in", "rt", stdin);
13
+ // freopen("o.out", "wt", stdout);
14
+ scanf (" %d %d" , &n, &m);
15
+ for (int i = 1 ; i <= n ; ++i){
16
+ for (int j = 1 ; j <= m ; ++j){
17
+ scanf (" %d" , A[i]+j);
18
+ A[i][j] += A[i-1 ][j]; // Cummulative Columns.
19
+ }
20
+ }
21
+ for (int top = 1 ; top <= n ; ++top){
22
+ for (int btm = top ; btm <= n ; ++btm){
23
+ long long sum = 0 ;
24
+ for (int i = 1 ; i <= m ; ++i){
25
+ sum += A[btm][i] - A[top-1 ][i]; // Add current element -Column-
26
+ sum = max (sum, 0ll ); // Does it worth?
27
+ bestSum = max (bestSum, sum); // Is it the best?
28
+ }
29
+ }
30
+ }
31
+ printf (" %lld\n " , bestSum);
32
+ return 0 ;
33
+ }
Original file line number Diff line number Diff line change
1
+ #include < bits/stdc++.h>
2
+
3
+ using namespace std ;
4
+ const int N = 22 , OO = 0x3f3f3f3f , MOD = 1000000007 ;
5
+ const double EPS = 0.000000001 ;
6
+
7
+ int a, b, c;
8
+ long long A[N][N][N];
9
+ long long bestSum;
10
+
11
+ int main (){
12
+ // freopen("i.in", "rt", stdin);
13
+ // freopen("o.out", "wt", stdout);
14
+ scanf (" %d %d %d" , &a, &b, &c);
15
+ for (int i = 1 ; i <= a ; ++i){
16
+ for (int j = 1 ; j <= b ; ++j){
17
+ for (int k = 1 ; k <= c ; ++k){
18
+ scanf (" %lld" , A[i][j]+k);
19
+ A[i][j][k] += A[i-1 ][j][k] + A[i][j-1 ][k] - A[i-1 ][j-1 ][k]; // Cummulative grids
20
+ }
21
+ }
22
+ }
23
+ for (int sa = 1 ; sa <= a ; ++sa)for (int ea = sa ; ea <= a ; ++ea){
24
+ for (int sb = 1 ; sb <= b ; ++sb)for (int eb = sb ; eb <= b ; ++eb){
25
+ long long sum = 0 ;
26
+ for (int i = 1 ; i <= c ; ++i){
27
+ sum += A[ea][eb][i] - A[sa-1 ][eb][i] - A[ea][sb-1 ][i] + A[sa-1 ][sb-1 ][i];
28
+ sum = max (sum, 0ll ); // Does it worth?
29
+ bestSum = max (bestSum, sum); // Is it the best?
30
+ }
31
+ }
32
+ }
33
+ printf (" %lld\n " , bestSum);
34
+ return 0 ;
35
+ }
You can’t perform that action at this time.
0 commit comments